R Language
Classes date-heure (POSIXct et POSIXlt)
Recherche…
Introduction
R inclut deux classes date-heure - POSIXct et POSIXlt - voir ?DateTimeClasses
.
Remarques
Pièges
Avec POSIXct, minuit affichera uniquement le fuseau horaire et la date, bien que le temps plein soit toujours stocké.
Rubriques connexes
Forfaits spécialisés
- lubrifier
Formatage et impression d'objets date-heure
# test date-time object options(digits.secs = 3) d = as.POSIXct("2016-08-30 14:18:30.58", tz = "UTC") format(d,"%S") # 00-61 Second as integer ## [1] "30" format(d,"%OS") # 00-60.99… Second as fractional ## [1] "30.579" format(d,"%M") # 00-59 Minute ## [1] "18" format(d,"%H") # 00-23 Hours ## [1] "14" format(d,"%I") # 01-12 Hours ## [1] "02" format(d,"%p") # AM/PM Indicator ## [1] "PM" format(d,"%z") # Signed offset ## [1] "+0000" format(d,"%Z") # Time Zone Abbreviation ## [1] "UTC"
Voir ?strptime
pour plus de détails sur les chaînes de format ici, ainsi que d'autres formats.
Analyse des chaînes en objets date-heure
Les fonctions d'analyse syntaxique d'une chaîne dans POSIXct et POSIXlt prennent des paramètres similaires et renvoient un résultat similaire, mais il existe des différences dans la manière dont cette date-heure est stockée. voir "Remarques".
as.POSIXct("11:38", # time string
format = "%H:%M") # formatting string
## [1] "2016-07-21 11:38:00 CDT"
strptime("11:38", # identical, but makes a POSIXlt object
format = "%H:%M")
## [1] "2016-07-21 11:38:00 CDT"
as.POSIXct("11 AM",
format = "%I %p")
## [1] "2016-07-21 11:00:00 CDT"
Notez que la date et le fuseau horaire sont imputés.
as.POSIXct("11:38:22", # time string without timezone
format = "%H:%M:%S",
tz = "America/New_York") # set time zone
## [1] "2016-07-21 11:38:22 EDT"
as.POSIXct("2016-07-21 00:00:00",
format = "%F %T") # shortcut tokens for "%Y-%m-%d" and "%H:%M:%S"
Voir ?strptime
pour plus de détails sur les chaînes de format ici.
Remarques
Éléments manquants
- Si un élément de date n'est pas fourni, cela est utilisé à partir de la date actuelle.
- Si un élément de temps n'est pas fourni, alors celui de minuit est utilisé, c'est-à-dire 0.
- Si aucun fuseau horaire n'est fourni dans la chaîne ou le paramètre
tz
, le fuseau horaire local est utilisé.
Fuseaux horaires
- Les valeurs acceptées de
tz
dépendent de l'emplacement.-
CST
est donné avec"CST6CDT"
ou"America/Chicago"
-
- Pour les emplacements pris en charge et les fuseaux horaires, utilisez:
- Dans R:
OlsonNames()
- Sinon, essayez dans R:
system("cat $R_HOME/share/zoneinfo/zone.tab")
- Dans R:
- Ces emplacements sont donnés par IANA (Internet Assigned Numbers Authority)
Arithmétique date-heure
Pour ajouter / soustraire du temps, utilisez POSIXct, car il stocke les temps en secondes
## adding/subtracting times - 60 seconds
as.POSIXct("2016-01-01") + 60
# [1] "2016-01-01 00:01:00 AEDT"
## adding 3 hours, 14 minutes, 15 seconds
as.POSIXct("2016-01-01") + ( (3 * 60 * 60) + (14 * 60) + 15)
# [1] "2016-01-01 03:14:15 AEDT"
Plus officiellement, as.difftime
peut être utilisé pour spécifier des périodes à ajouter à un objet date ou datetime. Par exemple:
as.POSIXct("2016-01-01") +
as.difftime(3, units="hours") +
as.difftime(14, units="mins") +
as.difftime(15, units="secs")
# [1] "2016-01-01 03:14:15 AEDT"
Pour trouver la différence entre les dates / heures, utilisez difftime()
pour les différences en secondes, minutes, heures, jours ou semaines.
# using POSIXct objects
difftime(
as.POSIXct("2016-01-01 12:00:00"),
as.POSIXct("2016-01-01 11:59:59"),
unit = "secs")
# Time difference of 1 secs
Pour générer des séquences de date-heure, utilisez seq.POSIXt()
ou simplement seq
.