【问题标题】:Mistakes when extracting date from datetime using as.Date function使用 as.Date 函数从日期时间中提取日期时的错误
【发布时间】:2021-09-26 05:15:10
【问题描述】:

我需要从datetime中获取日期,我用的是as.Date函数

2016-11-04 15:12:00 --- 2016-11-04 -- 正确

2018-03-17 19:18:00 --- 2018-03-18 -- false,应该是 2018-03-17

我注意到当时间大于“17:00”时,日期增加了 1 天。是什么原因?有没有更好的方法来获取正确的日期?

【问题讨论】:

    标签: r dataframe date datetime


    【解决方案1】:

    R 日期时间存储为 UCT 时间。然后您会看到它们,即print 它们,其偏移量由您的系统时区确定。至少目前,您似乎与格林威治(或巴黎)相距 24-17 = 7 个时区。 (当您所在时区的 17:00 时,是巴黎的午夜。)在 DST 恢复到正常时间后,这可能会改变一个单位。 (这是 R 中时间混乱的另一个常见原因。)

    太平洋时间下午 6:30:

     tseq <- seq(Sys.time(), Sys.time()+24*60*60 , by="hour")
     table(as.Date(tseq))
    #-------------------------
    2021-07-18 2021-07-19 
            23          2 
    

    【讨论】:

      【解决方案2】:

      日期时间似乎存储在您的本地时区中,而 as.Date 默认使用 UTC 时区,因此您会看到提取日期的变化。

      您需要将它们放在同一个时区。例如,在as.Date 中将tz 值指定为Sys.timezone(),您将获得与数据中显示的相同的日期。

      as.Date(as.POSIXct(df$datetime), tz = Sys.timezone())
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-23
        • 1970-01-01
        相关资源
        最近更新 更多