R中的奇怪的strptime行为

时间:2013-07-30 10:13:50

标签: r strptime

我经历了非常奇怪的strptime解析行为。

这是我在Windows机器上的R会话

> R.Version()$version.string
[1] "R version 2.15.2 (2012-10-26)"
> a <- ( strptime(  "29-MAR-13 02.26.53.000000000 AM" , "%d-%B-%y %I.%M.%OS %p" ) )
> str(a)
 POSIXlt[1:1], format: "2013-03-29 02:26:53"
> # convert to double: doesn't work
> as.double(a)
[1] NA
> b <- ( strptime(  "29-MAR-13 04.26.53.000000000 AM" , "%d-%B-%y %I.%M.%OS %p" ) )
> #same as `a`, but another hour
> str(b)
 POSIXlt[1:1], format: "2013-03-29 04:26:53"
> #convert to double: works
> as.double(b)
[1] 1364520413
>  #WTF ???

我在另一台机器(linux)上使用不同的次要版本R测试了相同的代码。代码在两种情况下都按预期工作:

> R.Version()$version.string
[1] "R version 2.15.1 (2012-06-22)"
> a <- ( strptime(  "29-MAR-13 02.26.53.000000000 AM" , "%d-%B-%y %I.%M.%OS %p" ) )
> str(a)
 POSIXlt[1:1], format: "2013-03-29 02:26:53"
> # convert to double: WORKS!
>  as.double(a)
[1] 1364513213
> b <- ( strptime(  "29-MAR-13 04.26.53.000000000 AM" , "%d-%B-%y %I.%M.%OS %p" ) )
> #same as `a`, but another hour
> str(b)
 POSIXlt[1:1], format: "2013-03-29 04:26:53"
>  #convert to double: works
> as.double(b)
[1] 1364520413
>

有人可以告诉我这是什么问题吗?我在R中发现了一个错误吗?

1 个答案:

答案 0 :(得分:2)

你在以色列吗?谷歌搜索“夏令时”3月29日“显示,2013年夏令时开始于3月29日在以色列,例如http://www.timeanddate.com/worldclock/clockchange.html?n=110 ...您测试的两台计算机之间的区域设置/时区设置的差异当然可以解释这一点,如果一个设置为以色列时区而另一个未设置。您可以使用tz="GMT" ...

进行检查

PS :我查看了你的个人资料,发现你确实在以色列。在我最初发布答案之前我没看过!

PPS :关于日期时间转换的非常大部分查询结果都是关于时区,特别是日光节省时间,问题,这是什么首先让我回答了问题。