R Language
Datum-Zeit-Klassen (POSIXct und POSIXlt)
Suche…
Einführung
R enthält zwei Datums- / Zeitklassen - POSIXct und POSIXlt - siehe ?DateTimeClasses
.
Bemerkungen
Fallstricke
Bei POSIXct zeigt Mitternacht nur Datum und Zeitzone an, obwohl die volle Zeit noch gespeichert ist.
verwandte Themen
Spezialisierte Pakete
- Lubridat
Datum-Uhrzeit-Objekte formatieren und drucken
# 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"
?strptime
Informationen zu den ?strptime
sowie zu anderen Formaten.
Analysieren von Zeichenfolgen in Datum-Uhrzeit-Objekten
Die Funktionen zum Analysieren einer Zeichenfolge in POSIXct und POSIXlt verwenden ähnliche Parameter und geben ein ähnlich aussehendes Ergebnis zurück. Es gibt jedoch Unterschiede in der Speicherung des Datums und der Uhrzeit. siehe Anmerkungen."
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"
Beachten Sie, dass Datum und Zeitzone berechnet werden.
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"
?strptime
Informationen zu den ?strptime
.
Anmerkungen
Fehlende Elemente
- Wenn kein Datumselement geliefert wird, wird das vom aktuellen Datum verwendet.
- Wenn kein Zeitelement geliefert wird, wird das von Mitternacht verwendet, dh 0s.
- Wenn weder im String noch im Parameter
tz
Zeitzone angegeben wird, wird die lokale Zeitzone verwendet.
Zeitzonen
- Die akzeptierten Werte von
tz
hängen vom Standort ab.-
CST
wird mit"CST6CDT"
oder"America/Chicago"
-
- Für unterstützte Orte und Zeitzonen verwenden Sie:
- In R:
OlsonNames()
- Alternativ versuchen Sie es in R:
system("cat $R_HOME/share/zoneinfo/zone.tab")
- In R:
- Diese Speicherorte werden von der Internet Assigned Numbers Authority (IANA) vergeben.
Datum-Uhrzeit-Arithmetik
Um die Zeit zu addieren / subtrahieren, verwenden Sie POSIXct, da die Zeiten in Sekunden gespeichert werden
## 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"
Formal kann mit as.difftime
Zeiträume angegeben werden, die einem Datums- oder Datumszeitobjekt hinzugefügt werden sollen. Z.B:
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"
Um die Differenz zwischen Datum und difftime()
verwenden Sie difftime()
für Unterschiede in Sekunden, Minuten, Stunden, Tagen oder Wochen.
# 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
Um Sequenzen von Datum und seq.POSIXt()
zu erzeugen, verwenden Sie seq.POSIXt()
oder einfach seq
.