我尝试使用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"
答案 0 :(得分:4)
你的朋友在同一时区吗?运行相同的操作系统?
您应该在执行tz=
时设置时区参数(as.POSIXct
),而不是在执行strftime
时。创建日期时,它将使用您当地的当前时区
as.POSIXct(1401729132, origin="1970-01-01", tz="GMT")
# "2014-06-02 17:12:12 GMT"
请阅读?Sys.timezone
帮助页面,了解操作系统特定时区数据库的变化方式和原因。