strptime在

时间:2018-01-11 17:45:35

标签: r strptime posixlt

我做错了什么?

我用

    dates<- strptime(dataframe$Measurement.Time,"%d.%m.%Y %H:%M",tz="")

将字符串转换为日期。这完全适用于14780次观测。但在两种情况下,它会返回NA

这是一个有效的例子。摘录均来自相同的结果数据框。

head(dataframe.with.dates)
        date.time      Measurement.Time mü.mü.VWC.1 øC.Temp.1
1 2000-01-10 00:30:00  10.01.2000 0:30       -0.011      -0.6
2 2000-01-10 01:00:00  10.01.2000 1:00       -0.011      -0.6
3 2000-01-10 01:30:00  10.01.2000 1:30       -0.011      -0.6

这是我生成的数据框的摘录,显示出错的两个结果:

subset(dataframe.with.dates,is.na(dataframe.with.dates$date.time))
          date.time Measurement.Time  mü.mü.VWC   øC.Temp
    9572      <NA>  29.03.2015 2:00      -0.011      -0.6
    9573      <NA>  29.03.2015 2:30      -0.011      -0.6

其中“date.time”位于POSIXlt,“Measurement.time”是character中的原始日期。

我检查了原始的.txt文件,我从中获取了数据,但无法找到上下测量值的任何差异。

1 个答案:

答案 0 :(得分:3)

谷歌搜索&#34;夏令时时间2015年3月29日&#34;表明这是春季转向欧洲夏令时的日期,例如:https://www.timeanddate.com/news/time/europe-starts-dst-2015.html

时区是一场噩梦:我原本以为使用tz="CET"可以做到这一点,但事实并非如此。 strptime(mt,"%d.%m.%Y %H:%M",tz="UTC+01:00")并不抱怨,但会以UTC格式创建时间。使用tz="GMT"可能最容易,并假装时间是标准的,即使他们不是......

我确定有重复项,但回答问题比找到它们更容易(我确实花了几分钟时间尝试)。