我的数据框中有一列为datetime(factor),其值为“15-10-2017 16:41:00”。
我希望将此数据转换为“2017-10-15 16:41:00”。 当我尝试转换它时,我也将时区作为输出。
我尝试使用tz =“”,usetz = F但没有用。 有什么建议吗?
代码:
as.POSIXlt(“15-10-2017 16:41:00”,格式=“%d-%m-%Y%H:%M:%S”) [1]“2017-10-15 16:41:00 IST”
答案 0 :(得分:5)
来自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
函数。
答案 1 :(得分:1)
如果可以将日期时间存储为字符而不是POSIXlt,则可以使用strftime()
:
my_datetime <- as.POSIXlt("15-10-2017 16:41:00",format = "%d-%m-%Y %H:%M:%S")
strftime(my_datetime)
答案 2 :(得分:0)
我这样做是这样的:
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)