在R中的POSIXlt转换期间删除时区

时间:2017-07-07 11:52:48

标签: r datetime timezone posixlt

我的数据框中有一列为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”

3 个答案:

答案 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)