为什么as.POSIXct在我的时间增加1小时?

时间:2014-03-26 15:30:58

标签: r time

下面是我的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

1 个答案:

答案 0 :(得分:3)

在文档中,您可以阅读:&#34;当前chron对象的实现不处理时区或夏令时。&#34;因此,解决方案是不在此使用chron

只需使用as.POSIXct.default

as.POSIXct("2006-01-04 22:00:00", "%Y-%m-%d %H:%M:%S", tz="CET")
[1] "2006-01-04 22:00:00 CET"