【问题标题】:R: Posix (Unix) Time Crazy ConversionR:Posix(Unix)时间疯狂转换
【发布时间】:2015-07-23 19:42:02
【问题描述】:

Unix 时间是 1435617000。

as.Date(1435617000,origin="01-01-1970")
[1] "3930586-11-23"

这是错误的。我正在尝试 (a) 获取正确的日期,每个 epoch 转换器是 GMT: Mon, 29 Jun 2015 22:30:00 GMT

如何让 R 告诉我月、日、年、小时、分钟和秒?谢谢。

【问题讨论】:

    标签: r posix posixct posixlt


    【解决方案1】:

    我认为发生这种情况的原因是as.Date 将参数转换为类日期对象。在这种情况下,您不需要日期而是类 POSIXct 对象,因为您的输入 x 向量包含 as.Date 无法管理的其他信息。即使使用正确的函数也可能出现的另一个问题是,如果您没有使用 tz 参数指定正确的时区(您的时区与原始时间相同的情况除外)。

    下面的代码完成了这项工作。

    x <- 1435617000
    as.POSIXct(x, origin = "1970-01-01", tz ="GMT")
    [1] "2015-06-29 22:30:00 GMT"
    

    使用as.Date

    如果您只需要日期,但您有一个完整的 Unix 时间,例如 x,您只需除以 86400(这是一天中的秒数!)就可以得到正确的日期。

     as.Date(x/86400L, origin = "1970-01-01")
    [1] "2015-06-29"
    

    另一个重要细节

    origin 参数必须与 YYYY-MM-DD 一起提供,而不是像您那样提供 DD-MM-YYYY 我不确定,但我认为前者是唯一被接受且正确的方法。

    【讨论】:

      猜你喜欢
      • 2011-12-22
      • 1970-01-01
      • 2010-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-21
      • 2010-11-13
      • 2017-08-12
      相关资源
      最近更新 更多