【问题标题】:Create sequence of dates and times in R without time zones在没有时区的 R 中创建日期和时间序列
【发布时间】:2016-03-29 22:11:37
【问题描述】:

我需要在 R 中创建一系列日期和时间,以 15 分钟为周期增加。 目前,我正在这样做:

datestimes=seq(as.POSIXlt("2011-01-01 00:00:00"), as.POSIXlt("2015-09-30 23:45:00"), by="15 min")

一年中的每一次我都应该读一次。问题是,由于它正在针对 BST 进行调整,因此我在 10 月的某些日期得到了两个值。

anm=aggregate(datestimes, by=list(datestimes$datestimes), FUN=length)
anm[which(anm$datestimes>1),]

                   Group.1 datestimes X.Date.
28993  2011-10-30 01:00:00          2       2
28994  2011-10-30 01:15:00          2       2
28995  2011-10-30 01:30:00          2       2
28996  2011-10-30 01:45:00          2       2
63933  2012-10-28 01:00:00          2       2
63934  2012-10-28 01:15:00          2       2
63935  2012-10-28 01:30:00          2       2
63936  2012-10-28 01:45:00          2       2
98873  2013-10-27 01:00:00          2       2
98874  2013-10-27 01:15:00          2       2
98875  2013-10-27 01:30:00          2       2
98876  2013-10-27 01:45:00          2       2
133813 2014-10-26 01:00:00          2       2
133814 2014-10-26 01:15:00          2       2
133815 2014-10-26 01:30:00          2       2
133816 2014-10-26 01:45:00          2       2

我尝试使用 as.chron 命令,因为它不使用时区,但它不允许 15 分钟的增量,这是我需要的。

【问题讨论】:

    标签: r date datetime sequence


    【解决方案1】:

    也许试试这个(UTC 时区不应允许任何重复):

    datestimes=seq(as.POSIXlt("2015-09-01 00:00:00", tz="UTC"), 
                   as.POSIXlt("2015-10-30 23:45:00", tz="UTC"), 
                   by="15 min")
    

    【讨论】:

      【解决方案2】:

      问题在于,由于它正在针对 BST 进行调整,因此我在 10 月的某些日期得到了两个值。

      这是因为“回退”(夏令时调整的助记符在秋季增加一小时)发生在人类时间下,而这就是你得到的默认情况除非你覆盖它。

      R> seq(as.POSIXlt("2012-10-28 00:00:00", tz="UTC"), 
      +      as.POSIXlt("2012-10-28 03:00:00", tz="UTC"), by="15 min")
       [1] "2012-10-28 00:00:00 UTC" "2012-10-28 00:15:00 UTC"
       [3] "2012-10-28 00:30:00 UTC" "2012-10-28 00:45:00 UTC"
       [5] "2012-10-28 01:00:00 UTC" "2012-10-28 01:15:00 UTC"
       [7] "2012-10-28 01:30:00 UTC" "2012-10-28 01:45:00 UTC"
       [9] "2012-10-28 02:00:00 UTC" "2012-10-28 02:15:00 UTC"
      [11] "2012-10-28 02:30:00 UTC" "2012-10-28 02:45:00 UTC"
      [13] "2012-10-28 03:00:00 UTC"
      R> 
      

      我在这里展示的示例涵盖了与上面相同的子集但没有后备,因为我们现在将 UTC 作为时区。并且 UTC 一直在施工,没有夏令时调整。

      【讨论】:

        猜你喜欢
        • 2022-11-23
        • 2012-12-10
        • 2015-08-19
        • 2017-11-17
        • 2022-10-16
        • 1970-01-01
        • 1970-01-01
        • 2018-09-16
        • 1970-01-01
        相关资源
        最近更新 更多