我的数据框中有一列作为日期时间(因子),值为“15-10-2017 16:41:00”。
我希望将此数据转换为“2017-10-15 16:41:00”。当我尝试转换它时,我也将时区作为输出。
我尝试使用 tz="", usetz=F 但没有用。有什么建议么 ?
代码:
as.POSIXlt("15-10-2017 16:41:00",format = "%d-%m-%Y %H:%M:%S") [1] "2017-10-15 16:41 :00 IST"
从帮助页面as.POSIXlt
:
"" 是当前时区
这是默认设置。
这就是为什么它不起作用。您可以通过这种方式删除时区信息,并且在打印时不会显示:
my_datetime <- as.POSIXlt("15-10-2017 16:41:00",format = "%d-%m-%Y %H:%M:%S")
my_datetime$zone <- NULL
my_datetime
但我不明白你为什么要这样做。如果您不想担心时区,您应该转换为 GMT。如果您必须强制使用某些特定时区,包也lubridate
有一个很好的功能。force_tz
如果您可以将日期时间存储为字符而不是 POSIXlt,那么您可以使用strftime()
:
my_datetime <- as.POSIXlt("15-10-2017 16:41:00",format = "%d-%m-%Y %H:%M:%S")
strftime(my_datetime)
我这样做:
strip.tz <- function(dt) {
fmt <- "%Y-%m-%d %H:%M:%S"
strptime(strftime(dt, format = fmt, tz=""), format = fmt, tz="UTC")
}
你会像这样使用它:
my_datetime <- as.POSIXct("15-10-2017 16:41:00",format = "%d-%m-%Y %H:%M:%S")
strip.tz(my_datetime)