【问题标题】:Strange strptime behavior in RR中奇怪的strptime行为
【发布时间】: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,但我得到不同的值(不同的时区?)

标签: r strptime


【解决方案1】:

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

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

PPS非常很大一部分关于日期时间转换的查询结果是关于时区,特别是夏令时问题,这就是首先引导我找到答案。

【讨论】:

  • 我可以确保我理解这一点吗?用户的示例时间“29-MAR-13 02.26.53 AM”是根据他的时区解释的。 strptime() 工作。但是,在他的 TZ 中,R 注意到这是夏令时时钟从凌晨 2 点移到凌晨 3 点的日期。因此,在他的时区内,时钟实际上不可能说出“02.26.53AM”。所以 R 注意到用户输入了一个“不可能的时间”,因此“as.double()”返回一个 NA。惊人的! Dediction:那个时钟时间不是来自用户的 TZ。我说对了吗?让我想知道 R 在秋季倒班时会做什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-21
  • 1970-01-01
  • 2015-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多