这是我的示例:
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] ""
为什么区域为空,所以在打印变量值时清楚显示?因此,我猜它正在附加本地时区。我可以防止这种行为吗?
因为您没有定义时区。尽管您认为自己定义了时区,但实际上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"