我在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点。该日期espan的前16个值为:
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 AM EDT出现两次?不应该比美国东部时间上午1点一小时的时间是东部时间凌晨1点?这是lubridate
的问题,还是操作系统的一些怪癖?
答案 0 :(得分: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"