Moje pytanie pochodzi z this question. Pytanie zawierało następujący ciąg znaków.Konwersja Chr "00:00:00" na datę "00:00:00"
x <- "2007-02-01 00:00:00"
y <- "02/01/2007 00:06:10"
Jeśli spróbujesz przekonwertować ten ciąg na obiekt klasy daty, stanie się coś śmiesznego.
To jest próbka z odpowiedzi @ nrusell.
as.POSIXct(x,tz=Sys.timezone())
[1] "2007-02-01 EST"
as.POSIXct(y,format="%m/%d/%Y %H:%M:%S",tz=Sys.timezone())
[1] "2007-02-01 00:06:10 EST"
Jak widać, 00:00:00
znika z pierwszego przykładu. @Richard Scriven pozostawił następujący przykład w naszej dyskusji za pomocą lubridate
.
dt <- as.POSIXct("2007-02-01 00:00:00")
hour(dt) <- hour(dt)+1
dt
[1] "2007-02-01 01:00:00 EST"
hour(dt) <- hour(dt)-1
dt
[1] "2007-02-01 EST"
Ponownie 00:00:00
znika. Dlaczego R unika przechowania 00:00:00
w obiekcie klasy daty po konwersji? Jak możemy zachować 00:00:00
?
Co jeszcze bardziej Dziwne jest to, że jeśli zrobisz 'n <- now()', a następnie użyjesz 'hou r <-', 'minute <-' i' second <-', aby sprowadzić je wszystkie do zera, północ faktycznie pozostanie. Wackiness. Może to być "niedoskonałość" z przetwarzaniem daty i czasu w R. –
@RichardScriven: Twierdzę, że to niedoskonałość w lubridate. Kwestia PO wcale nie jest problemem. Podobnie jest z argumentacją, że numer 1 nie drukuje zer po prawej stronie separatora dziesiętnego. –
@JoshuaUlrich Ale północ to aktualna pora dnia, więc czy nie powinna być drukowana jako taka? –