R Language                
            Datum und Uhrzeit
        
        
            
    Suche…
Einführung
 R enthält Klassen für Datumsangaben, Datumszeiten und Zeitunterschiede. ?DateTimeClasses ?difftime ?Dates , ?DateTimeClasses , ?difftime und im Abschnitt "Weitere ?difftime " dieser Dokumente. Verwandte Dokumente: Datums- und Datumszeit-Klassen . 
Bemerkungen
Klassen
- Eine Datum-Uhrzeit-Klasse, POSIXct, speichert die Zeit als Sekunden seit UNIX-Epoche am - 1970-01-01 00:00:00 UTC.- Sys.Time()ist das Format, das beim- Sys.Time()der aktuellen Uhrzeit mit- Sys.Time().
- In einer Datums- / Zeitklasse wird eine Liste mit Tag, Monat, Jahr, Stunde, Minute, Sekunde usw. gespeichert. Dies ist das von - strptimezurückgegebene- strptime.
- Datum Die einzige Datumsklasse speichert das Datum als Gleitkommazahl. 
Datum / Uhrzeit-Format auswählen
POSIXct ist die einzige Option in der Welt von UNIX. Es ist schneller und benötigt weniger Speicher als POSIXlt.
origin = as.POSIXct("1970-01-01 00:00:00", format ="%Y-%m-%d %H:%M:%S", tz = "UTC")
origin
## [1] "1970-01-01 UTC"
origin + 47
## [1] "1970-01-01 00:00:47 UTC"
as.numeric(origin)     # At epoch
## 0
as.numeric(Sys.time()) # Right now (output as of July 21, 2016 at 11:47:37 EDT)
## 1469116057
posixlt = as.POSIXlt(Sys.time(), format ="%Y-%m-%d %H:%M:%S", tz = "America/Chicago")
# Conversion to POISXct
posixct = as.POSIXct(posixlt)
posixct
# Accessing components
posixlt$sec   # Seconds 0-61
posixlt$min   # Minutes 0-59
posixlt$hour  # Hour 0-23
posixlt$mday  # Day of the Month 1-31
posixlt$mon   # Months after the first of the year 0-11
posixlt$year  # Years since 1900.
ct = as.POSIXct("2015-05-25")
lt = as.POSIXlt("2015-05-25")
object.size(ct)
# 520 bytes
object.size(lt)
# 1816 bytes
Spezialisierte Pakete
- Jederzeit
- data.table IDate und ITime
- schnelle Zeit
- Lubridat
- Nanotime
Aktuelles Datum und Uhrzeit
R kann auf das aktuelle Datum, die Uhrzeit und die Zeitzone zugreifen:
Sys.Date()             # Returns date as a Date object
## [1] "2016-07-21"
Sys.time()             # Returns date & time at current locale as a POSIXct object
## [1] "2016-07-21 10:04:39 CDT"
as.numeric(Sys.time()) # Seconds from UNIX Epoch (1970-01-01 00:00:00 UTC)
## [1] 1469113479
Sys.timezone()         # Time zone at current location
## [1] "Australia/Melbourne"
 Verwenden Sie OlsonNames() , um die Zeitzonennamen in der Olson / IANA-Datenbank auf dem aktuellen System anzuzeigen: 
str(OlsonNames())
## chr [1:589] "Africa/Abidjan" "Africa/Accra" "Africa/Addis_Ababa" "Africa/Algiers" "Africa/Asmara" "Africa/Asmera" "Africa/Bamako" ...
Gehe zum Ende des Monats
Nehmen wir an, wir wollen bis zum letzten Tag des Monats gehen. Diese Funktion hilft Ihnen dabei:
eom <- function(x, p=as.POSIXlt(x)) as.Date(modifyList(p, list(mon=p$mon + 1, mday=0)))
Prüfung:
x <- seq(as.POSIXct("2000-12-10"),as.POSIXct("2001-05-10"),by="months")
> data.frame(before=x,after=eom(x))
      before      after
1 2000-12-10 2000-12-31
2 2001-01-10 2001-01-31
3 2001-02-10 2001-02-28
4 2001-03-10 2001-03-31
5 2001-04-10 2001-04-30
6 2001-05-10 2001-05-31
> 
Verwenden eines Datums in einem String-Format:
> eom('2000-01-01')
[1] "2000-01-31"
Zum ersten Tag des Monats gehen
Angenommen, wir möchten zum ersten Tag eines bestimmten Monats gehen:
date <- as.Date("2017-01-20")
> as.POSIXlt(cut(date, "month"))
[1] "2017-01-01 EST"
Verschieben Sie ein Datum um mehrere Monate konsistent
 Lassen Sie uns sagen , dass wir zu einem bestimmten Zeitpunkt eine verschiebende num Monate. Wir können die folgende Funktion definieren, die das Paket mondate : 
moveNumOfMonths <- function(date, num) {
    as.Date(mondate(date) + num)
}
Es bewegt sich konsistent den Monatsteil des Datums und passt den Tag an, falls sich das Datum auf den letzten Tag des Monats bezieht.
Zum Beispiel:
Einen Monat zurück:
> moveNumOfMonths("2017-10-30",-1)
[1] "2017-09-30"
Zurück zwei Monate:
> moveNumOfMonths("2017-10-30",-2)
[1] "2017-08-30"
Zwei Monate weiterleiten:
> moveNumOfMonths("2017-02-28", 2)
[1] "2017-04-30"
Es bewegt sich zwei Monate nach dem letzten Tag im Februar, also dem letzten Tag im April.
Sehen wir uns an, wie es für Vorwärts- und Rückwärtsoperationen am letzten Tag des Monats funktioniert:
> moveNumOfMonths("2016-11-30", 2)
[1] "2017-01-31"
> moveNumOfMonths("2017-01-31", -2)
[1] "2016-11-30"
Da der November 30 Tage hat, erhalten wir bei der Rückwärtsoperation das gleiche Datum, aber:
> moveNumOfMonths("2017-01-30", -2)
[1] "2016-11-30"
> moveNumOfMonths("2016-11-30", 2)
[1] "2017-01-31"
Da der Januar 31 Tage hat, wird der letzte Tag des Monats Januar angezeigt.