R Language
Klasy daty i godziny (POSIXct i POSIXlt)
Szukaj…
Wprowadzenie
R obejmuje dwie klasy data-czas - POSIXct i POSIXlt - patrz ?DateTimeClasses .
Uwagi
Pułapki
W POSIXct północ pokazuje tylko datę i strefę czasową, chociaż cały czas jest nadal zapisywany.
powiązane tematy
Specjalistyczne pakiety
- lubridate
Formatowanie i drukowanie obiektów daty i godziny
# 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"
Zobacz ?strptime aby uzyskać szczegółowe informacje na temat ciągów formatu tutaj, a także innych formatów.
Przetwarzanie ciągów w obiekty daty i godziny
Funkcje parsowania łańcucha do POSIXct i POSIXlt pobierają podobne parametry i zwracają podobny wygląd, ale istnieją różnice w sposobie przechowywania tej daty i godziny; patrz „Uwagi”.
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"
Pamiętaj, że data i strefa czasowa są przypisywane.
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"
Zobacz ?strptime aby uzyskać szczegółowe informacje na temat ciągów formatu tutaj.
Notatki
Brakujące elementy
- Jeśli element daty nie zostanie podany, zostanie użyty element z bieżącej daty.
- Jeśli element czasowy nie jest podany, to używany jest od północy, tj. 0s.
- Jeśli nie podano żadnej strefy czasowej ani w łańcuchu, ani w parametrze
tz, używana jest lokalna strefa czasowa.
Strefy czasowe
- Akceptowane wartości
tzzależą od lokalizacji.-
CSTpodaje się z"CST6CDT"lub"America/Chicago"
-
- Do obsługiwanych lokalizacji i stref czasowych użyj:
- W R:
OlsonNames() - Alternatywnie, spróbuj w R:
system("cat $R_HOME/share/zoneinfo/zone.tab")
- W R:
- Te lokalizacje są podane przez Internet Assigned Numbers Authority (IANA)
Arytmetyka daty i czasu
Aby dodać / odjąć czas, użyj POSIXct, ponieważ przechowuje czasy w sekundach
## 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"
Bardziej formalnie, as.difftime może być użyty do określenia przedziałów czasu, as.difftime mają zostać dodane do obiektu daty lub daty i godziny. Na przykład:
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"
Aby znaleźć różnicę między datami / godzinami, użyj difftime() dla różnic w sekundach, minutach, godzinach, dniach lub tygodniach.
# 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
Aby wygenerować sekwencje dat i godzin, użyj seq.POSIXt() lub po prostu seq .