【发布时间】:2014-03-26 15:30:57
【问题描述】:
下面是我的行为怪异的 R 代码。我预计输入的时间是 22:00,但我得到了 23:00。
as.POSIXct(chron(dates="01/04/06",times="22:00:00"),tz="CET")
[1] "2006-01-04 23:00:00 CET"
在我的代码的下一行中,我使用结果从 xts/zoo 对象中选择一个窗口:因此,忽略错误并输入 21:00(在上面)没有用,因为它返回了错误的数据。使用上面代码的结果进行窗口化会返回正确的值。
head(qs<-as.zoo(window(Q,start=as.POSIXct(chron(dates="01/04/06",times="22:00:00"),tz="CET"),end=as.POSIXct(chron(dates="01/05/06",times="21:00:00"),tz="CET"))))
这是一组数据样本 (Q):
Stage.Qm Flow.Qm Stage.QmDB Flow.QmDB Stage.Q1000 Flow.Q1000 Stage.Q1000DB Flow.Q1000DB
2006-01-04 23:00:00 541.1589 5.636957 541.1592 5.646017 541.5708 20.44692 541.5708 20.44692
2006-01-04 23:01:00 541.1589 5.637268 541.1592 5.645087 541.5701 20.41321 541.5701 20.41321
2006-01-04 23:02:00 541.1589 5.638604 541.1588 5.635806 541.5701 20.40946 541.5701 20.40946
2006-01-04 23:03:00 541.1589 5.638979 541.1588 5.635694 541.5704 20.42712 541.5704 20.42712
2006-01-04 23:04:00 541.1589 5.639619 541.1590 5.640691 541.5710 20.45848 541.5710 20.45848
2006-01-04 23:05:00 541.1590 5.640662 541.1591 5.641682 541.5715 20.47893 541.5715 20.4789
【问题讨论】:
-
在文档中您可以阅读:“chron 对象的当前实现不处理时区也不处理夏令时。”因此,一个解决方案是不要在这里使用
chron。 -
谢谢。我已更改为
as.POSIXct(strptime("2006-01-04 22:00:00", "%Y-%m-%d %H:%M:%S")),这给出了所需的[1] "2006-01-04 22:00:00 CET" -
1.你不需要
strptime那里。 2. 我建议始终明确设置时区。 3. 随意写下您的问题的答案。 -
您能否使用我的代码(在上面的评论中)并举个例子。谢谢:)