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

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 .



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow