Zoeken…


Invoering

R bevat twee datum-tijdklassen - POSIXct en POSIXlt - zie ?DateTimeClasses .

Opmerkingen

valkuilen

Met POSIXct geeft middernacht alleen de datum en tijdzone weer, hoewel de volledige tijd nog steeds is opgeslagen.

gerelateerde onderwerpen

Gespecialiseerde pakketten

  • lubridate

Objecten met datum-tijd opmaken en afdrukken

# 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"

Zie ?strptime voor details over de indelingsstrings hier, evenals andere indelingen.

Tekenreeksen in datum-tijdobjecten parseren

De functies voor het parseren van een string in POSIXct en POSIXlt hebben vergelijkbare parameters en geven een vergelijkbaar uitziend resultaat, maar er zijn verschillen in hoe die datum-tijd wordt opgeslagen; zie "Opmerkingen".

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"

Merk op dat datum en tijdzone worden toegerekend.

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"

Zie ?strptime voor details over de indelingsstrings hier.


Notes

Ontbrekende elementen

  • Als er geen datumelement wordt opgegeven, wordt dat van de huidige datum gebruikt.
  • Als er geen tijdelement wordt opgegeven, wordt dat vanaf middernacht gebruikt, dat wil zeggen nullen.
  • Als er geen tijdzone wordt opgegeven in de tekenreeks of de parameter tz , wordt de lokale tijdzone gebruikt.

Tijdzones

Rekenkundige datum en tijd

Gebruik POSIXct om tijd toe te voegen / af te trekken, omdat het tijden in seconden opslaat

## 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"

Meer formeel kan as.difftime worden gebruikt om perioden op te geven die moeten worden toegevoegd aan een datum- of datetime-object. bv:

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"

Gebruik difftime() voor het verschil tussen datums / tijden voor verschillen in seconden, minuten, uren, dagen of weken.

# 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

Gebruik seq.POSIXt() of gewoon seq om sequenties van datum-tijden te genereren.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow