【问题标题】:Remove an hour from my timestamp从我的时间戳中删除一个小时
【发布时间】:2014-07-22 21:43:58
【问题描述】:

我尝试使用 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"

【问题讨论】:

    标签: r time strftime


    【解决方案1】:

    你的朋友在同一个时区吗?运行相同的操作系统?

    您应该在执行as.POSIXct 时设置时区参数(tz=),而不是在执行strftime 时。创建日期时,它将使用您当地的当前时区

    as.POSIXct(1401729132, origin="1970-01-01", tz="GMT")
    # "2014-06-02 17:12:12 GMT"
    

    阅读 ?Sys.timezone 帮助页面,了解这些信息如何以及为什么会因操作系统特定的时区数据库而异。

    【讨论】:

    • 这很可能是问题所在。在我的工作中,我们的服务器遍布世界各地,时钟都设置为 GMT。让生活更轻松。
    • 你好,我在 Xubuntu 12.04 下运行,我朋友在 ArchLinux 下,我们都在 UTC+2 下。
    • @LoicCoenen 你从哪里得到 1401729132 的号码?为什么你认为它不应该是“2014-06-02 17:12:12 GMT”?当您设置tz="GMT" 时,您会得到与我相同的结果。这似乎是该时区中该号码的正确日期/时间。
    • 1401729132 来自 js Date.now() / 1000,但通过其他方法获取时间戳,我们得到了相同的数字 - 比利时大约是 19:15 (UTC+2)。所以返回的 GMT 小时是正确的,但我不能让它返回我的时区的正确小时。
    • 当我从 (unixtimestamp.com) 获取当前时间戳并尝试用 R 计算它时,它仍然会回答一小时前的时间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-04
    • 2018-06-27
    • 1970-01-01
    • 2013-10-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多