我尝试使用strftime函数从时间戳中生成可读的字符串。我的问题是,每次我尝试执行转换时,都会有一个小时被取消。
我在比利时,现在是夏天,所以我的linux设置为GMT+2
jt@jt-roxane:~$ date
lundi 2 juin 2014, 19:18:48 (UTC+0200)
jt@jt-roxane:~$ R
R version 2.14.1 (2011-12-22)
> Sys.time()
[1] "2014-06-02 19:19:46 CEST"当我的朋友试图转换时间戳1401729132时,它被正确地翻译成
as.POSIXct(1401729132, origin="1970-01-01")
"2014-06-02 19:12:12 CEST"但当我试着做的时候,答案是
> as.POSIXct(1401729132, origin="1970-01-01")
[1] "2014-06-02 18:12:12 CEST"我试着设定正确的时区,但似乎解决不了问题。
> strftime(as.POSIXct(1401729132, origin="1970-01-01"), '%H:%M:%S', tz="UTC-2")
[1] "18:12:12"你知道它从哪里来吗?
谢谢你的帮助!
编辑:
我已经尝试在as.POSIXct()中设置正确的TZ --这一行给出了错误的答案:
> as.POSIXct(1401729132, origin="1970-01-01", tz="GMT")
[1] "2014-06-02 17:12:12 GMT"发布于 2014-06-02 17:41:50
你的朋友在同一时区吗?运行相同的操作系统?
您应该在执行tz=时,而不是在执行strftime时设置时区参数(strftime)。创建日期时,它将使用本地当前时区。
as.POSIXct(1401729132, origin="1970-01-01", tz="GMT")
# "2014-06-02 17:12:12 GMT"阅读?Sys.timezone帮助页面,了解这些数据如何以及为什么会根据操作系统特定的时区数据库而变化。
https://stackoverflow.com/questions/24000202
复制相似问题