【问题标题】:Converting from UTC into date format in R在R中从UTC转换为日期格式
【发布时间】:2012-06-29 08:13:24
【问题描述】:

我有一个 UTC 时间戳。我想将其转换为R 中的YYYY/MM/DD 格式。

例如,1318394558766。我尝试format 命令失败。

感谢任何帮助。

谢谢!

【问题讨论】:

    标签: r timezone


    【解决方案1】:

    您可以使用as.POSIXctas.POSIXlt。但是,您必须知道毫秒数的起始日期。

    as.POSIXct(1318394558766/1000, origin='1970-01-01')
    
    > unlist(as.POSIXlt(1318394558766/1000, origin='1970-01-01'))
        sec     min    hour    mday     mon    year    wday    yday   isdst 
     38.766  42.000  21.000  11.000   9.000 111.000   2.000 283.000   1.000 
    > 
    

    然后你可以使用format 得到想要的YYYY/MM/DD:

    format(as.POSIXct(1318394558766/1000, origin='1970-01-01'), format='%Y/%m/%d')
    

    【讨论】:

      【解决方案2】:

      除了贾斯汀的回答(而且因为我无法制作 cmets)之外,您可能还想将 tz 添加到转换中。

      as.POSIXct(1318394558766/1000, origin='1970-01-01')
      [1] "2011-10-12 05:42:38 EST"
      as.POSIXct(1318394558766/1000, origin='1970-01-01', tz="UTC")
      [1] "2011-10-12 04:42:38 UTC"
      

      有关更多信息,请参阅;

      ?timezone
      

      【讨论】:

      • +1 我曾经惊讶地发现我的时间值中有 NA。原来,如果您更改为夏令时,我的小时值不存在。
      【解决方案3】:

      另一个解决方案是使用.POSIXct:

      utc <- .POSIXct(1318394558766/1000, tz="UTC")
      

      然后您可以轻松地将utc 转换为日期或字符向量:

      as.Date(utc)            # Date vector
      format(utc, "%Y-%m-d")  # character vector
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-07
        • 2021-10-14
        相关资源
        最近更新 更多