【发布时间】:2013-07-30 10:13:50
【问题描述】:
我遇到了非常奇怪的 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 中发现错误了吗?
【问题讨论】:
-
在 2.15.2、2.15.3 和 3.0.1 中为我工作。 W7,64 位。
-
请添加
sessionInfo()$platform的输出以及其他可能与您的操作系统相关的信息。 -
适用于 3.1(开发)、32 位 Ubuntu,但我得到不同的值(不同的时区?)