Как преобразовать дату и время из символа в тип datetime

Привет, как мне преобразовать это в объект типа datetime, который сохраняет дату и время?

DateTime="2007-02-01 00:00:00"

Пытался

as.Date(DateTime,'%Y-%m-%d %H:%M:%S') 

но не возвращает часть времени. не могу понять, как после попытки strptime и lubridate. Благодарю.

2 ответа

Решение

Как заметил @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Вы обычно должны указать формат явно.

Если вы хотите специально преобразовать "2007-02-01 00:00:00" в объект класса даты, это то, что вам нужно сделать. Это основано на этом вопросе и ответе

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
Другие вопросы по тегам