【问题标题】:Daylight savings time in lubridatelubridate 的夏令时
【发布时间】:2012-08-22 10:08:32
【问题描述】:

我在装有 OS X Mountain Lion 的 Mac 上运行 R 2.15.1。我正在尝试使用 lubridate 包(v 1.1.0)以 15 分钟的间隔在 2011 年的美国东部时区生成一系列时间。以下似乎应该可以工作:

d0 <- mdy_hms("1/1/2011 5:00:00", tz="UTC")
dspan <- d0 + c(0:35039) * minutes(15)
espan <- with_tz(dspan,tz="America/New_york")

现在,2011 年夏令时从 3 月 13 日凌晨 2 点开始。该日期的前 16 个 espan 值是:

espan[(month(espan)==3)&(day(espan)==13)][1:16]

 [1] "00:00:00 EST" "00:15:00 EST" "00:30:00 EST" "00:45:00 EST"
 [5] "01:00:00 EST" "01:15:00 EST" "01:30:00 EST" "01:45:00 EST"
 [9] "03:00:00 EDT" "03:15:00 EDT" "03:30:00 EDT" "03:45:00 EDT"
[13] "04:00:00 EDT" "04:15:00 EDT" "04:30:00 EDT" "04:45:00 EDT"

在上面的输出中,我删除了日期以使其适合此处。但它给了我我所期望的。美国东部标准时间凌晨 1 点后一小时的时间是美国东部时间凌晨 3 点。但是,夏令时于 11 月 6 日结束,以下是 espan 在该日期的前 16 个值:

espan[(month(espan)==11)&(day(espan)==6)][1:16]

 [1] "00:00:00 EDT" "00:15:00 EDT" "00:30:00 EDT" "00:45:00 EDT"
 [5] "01:00:00 EDT" "01:15:00 EDT" "01:30:00 EDT" "01:45:00 EDT"
 [9] "01:00:00 EDT" "01:15:00 EDT" "01:30:00 EDT" "01:45:00 EDT"
[13] "02:00:00 EST" "02:15:00 EST" "02:30:00 EST" "02:45:00 EST"

为什么凌晨 1 点 EDT 出现两次?比美国东部时间凌晨 1 点晚一小时的时间不应该是美国东部标准时间凌晨 1 点吗?这是lubridate 的问题,还是操作系统的问题?

【问题讨论】:

  • 请注意,此错误似乎已修复。

标签: r time-series


【解决方案1】:

我认为这是一个错误。

> seq(as.POSIXct("2011-11-06 00:15:00", tz='America/New_York'), 
      as.POSIXct('2011-11-06 02:45:00', tz='America/New_York'), 
      by='min')[c(TRUE, rep(FALSE, 14))]

 [1] "2011-11-06 00:15:00 EDT" "2011-11-06 00:30:00 EDT" "2011-11-06 00:45:00 EDT"
 [4] "2011-11-06 01:00:00 EDT" "2011-11-06 01:15:00 EDT" "2011-11-06 01:30:00 EDT"
 [7] "2011-11-06 01:45:00 EDT" "2011-11-06 01:00:00 EST" "2011-11-06 01:15:00 EST"
[10] "2011-11-06 01:30:00 EST" "2011-11-06 01:45:00 EST" "2011-11-06 02:00:00 EST"
[13] "2011-11-06 02:15:00 EST" "2011-11-06 02:30:00 EST" "2011-11-06 02:45:00 EST"

【讨论】:

  • 好像是。但是,时区和夏令时问题通常很棘手,并且是特定于操作系统的。
  • 我在 x86_64-pc-mingw32/x64(64 位)上使用 R 版本 2.15.1 (2012-06-22) 得到与 @Gsee 类似的结果,因此它可能不是特定于操作系统的,但润滑具体。
  • 这不是操作系统的问题。 seq 按您期望的方式工作。
  • @Ringold 我建议你提交错误报告。 github.com/hadley/lubridate/issues
猜你喜欢
  • 2014-11-06
  • 2013-02-18
  • 2011-02-22
  • 2012-04-25
  • 1970-01-01
  • 1970-01-01
  • 2020-03-08
  • 2017-07-11
相关资源
最近更新 更多