R中的POSIXct中缺少时区值和本地时间

问题描述 投票:0回答:1

这是我的示例:

my_time<- as.POSIXct("2020-02-01 06:20:09 UTC")

它创建POSIXct对象,如果我打印它的值,我得到

"2020-02-01 06:20:09 CST"

如果我跑步

attributes(my_time)

我回来

$class
[1] "POSIXct" "POSIXt" 

$tzone
[1] ""

为什么区域为空,所以在打印变量值时清楚显示?因此,我猜它正在附加本地时区。我可以防止这种行为吗?

r posixct
1个回答
1
投票

因为您没有定义时区。尽管您认为自己定义了时区,但实际上as.POSIXct不会读取字符串中的“ UTC”指示符。

因此,因为as.POSIXct找不到您的时区。

当您打印时间时,POSIXct在对象中找不到任何时区,如果未定义时区,则假定您是指您的时区。因此,在打印对象时,您将获得计算机时区。

例如,当我运行您的代码时,我得到:

> my_time<- as.POSIXct("2020-02-01 06:20:09 UTC")
> my_time
[1] "2020-02-01 06:20:09 CET"

因此,您应该定义时区:

> my_time<- as.POSIXct("2020-02-01 06:20:09", tz='UTC')
> attributes(my_time)
$class
[1] "POSIXct" "POSIXt" 

$tzone
[1] "UTC"
© www.soinside.com 2019 - 2024. All rights reserved.