嗨,我該如何將它轉換爲保存日期和時間的日期時間類型對象?如何將日期和時間從字符轉換爲日期時間類型
DateTime="2007-02-01 00:00:00"
試圖
as.Date(DateTime,'%Y-%m-%d %H:%M:%S')
,但不會返回時間的一部分。無法弄清楚如何嘗試strptime和lubridate後。謝謝。
嗨,我該如何將它轉換爲保存日期和時間的日期時間類型對象?如何將日期和時間從字符轉換爲日期時間類型
DateTime="2007-02-01 00:00:00"
試圖
as.Date(DateTime,'%Y-%m-%d %H:%M:%S')
,但不會返回時間的一部分。無法弄清楚如何嘗試strptime和lubridate後。謝謝。
由於@Richard Scriven指出,你不應該使用as.Date
,因爲它不是datetime類。這裏有幾個不同的方式:
DateTime <- "2007-02-01 00:00:00"
DateTime2 <- "02/01/2007 00:06:10"
## default format Y-m-d H:M:S
> as.POSIXct(DateTime,tz=Sys.timezone())
[1] "2007-02-01 EST"
> as.POSIXlt(DateTime,tz=Sys.timezone())
[1] "2007-02-01 EST"
##
## specify format m/d/Y H:M:S
> as.POSIXct(DateTime2,format="%m/%d/%Y %H:%M:%S",tz=Sys.timezone())
[1] "2007-02-01 00:06:10 EST"
> as.POSIXlt(DateTime2,format="%m/%d/%Y %H:%M:%S",tz=Sys.timezone())
[1] "2007-02-01 00:06:10 EST"
##
## using lubridate
library(lubridate)
> ymd_hms(DateTime,tz=Sys.timezone())
[1] "2007-02-01 EST"
> mdy_hms(DateTime2,tz=Sys.timezone())
[1] "2007-02-01 00:06:10 EST"
您不必指定format=
爲as.POSIXct
和as.POSIXlt
當你有%Y-%m-%d %H:%M:%S
格式。在其他情況下,例如%m/%d/%Y %H:%M:%S
,您通常必須明確指定格式。
我可能是錯的。但是,在我看來,OP希望保持日期和時間,因爲它們在字符串中。 '2007-02-01 EST可能不是OP所需的,因爲它不包含結果中的'00:00:00'。 – jazzurro 2014-09-21 15:32:35
嗯,這是一個公平點。我知道如果你有一個日期時間爲'00:00:00',另一個日期時間在'data.frame'中有非零的HMS,那麼它會打印0,即'data.frame(x = c( as.POSIXct(DateTime,tz = Sys.timezone()),as.POSIXct(DateTime,tz = Sys.timezone())+ 1))'(使用上面的對象);我會看看是否有辦法通過單獨的時間戳做到這一點。 – nrussell 2014-09-21 15:44:51
謝謝!似乎在日期時間格式hms不顯示,但在DateTime2格式它是。 – santoku 2014-09-21 16:01:21
如果您想專門將「2007-02-01 00:00:00」轉換爲日期類對象,則需要執行此操作。這是基於this question and answer
print.POSIXct <- function(x,...)print(format(x,"%Y-%m-%d %H:%M:%S"))
x <- "2007-02-01 00:00:00"
x <- as.POSIXct(x,tz=Sys.timezone())
x
'as.Date'只返回日曆日期,因爲類'Date'對象只顯示爲日曆日期。 – 2014-09-21 15:00:30