5

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

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操作系统的问题还是某些怪癖?

4

1 回答 1

4

我认为这是一个错误。

> 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"
于 2012-08-27T22:25:51.020 回答