Câu hỏi của tôi xuất phát từ this question. Câu hỏi có chuỗi ký tự sau.Chuyển đổi chr "00:00:00" sang ngày giờ "00:00:00"
x <- "2007-02-01 00:00:00"
y <- "02/01/2007 00:06:10"
Nếu bạn cố chuyển đổi chuỗi này thành đối tượng ngày tháng, điều gì đó vui nhộn xảy ra.
Đây là mẫu từ câu trả lời của @ 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"
Như bạn thấy, 00:00:00
biến mất khỏi ví dụ đầu tiên. @Richard Scriven đã để lại ví dụ sau trong cuộc thảo luận của chúng tôi bằng cách sử dụng 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"
Một lần nữa, 00:00:00
biến mất. Tại sao R tránh giữ 00:00:00
trong đối tượng lớp ngày sau khi chuyển đổi? Làm thế nào chúng ta có thể giữ 00:00:00
?
gì thậm chí còn nhiều hơn nữa kỳ lạ là nếu bạn làm 'n <- now()' và sau đó sử dụng 'hou r <-', 'phút <-' và' giây <-' để đưa tất cả xuống 0, nửa đêm thực sự vẫn còn. Wackiness. Điều này có thể là "không hoàn hảo" với xử lý ngày tháng trong R. –
@RichardScriven: Tôi cho rằng đó là sự không hoàn hảo trong lubridate. Vấn đề của OP không thực sự là vấn đề. Nó tương tự như tranh luận rằng đó là một vấn đề mà một số 1 không in các số 0 ở bên phải của số thập phân. –
@JoshuaUlrich Nhưng nửa đêm là một thời gian thực tế trong ngày, vì vậy nó không nên được in như vậy? –