7

我的数据框中有一列作为日期时间(因子),值为“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"

4

3 回答 3

7

从帮助页面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

于 2017-07-07T12:07:00.153 回答
4

如果您可以将日期时间存储为字符而不是 POSIXlt,那么您可以使用strftime()

my_datetime <- as.POSIXlt("15-10-2017 16:41:00",format = "%d-%m-%Y %H:%M:%S")
strftime(my_datetime)
于 2019-10-31T22:50:57.823 回答
2

我这样做:

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)
于 2019-11-22T18:01:25.480 回答