R as.POSIX错误,无法转换特定日期
当我调试我的r代码时,我发现一个很难解释的错误。有人知道发生了什么事吗 当我尝试R as.POSIX错误,无法转换特定日期,r,R,当我调试我的r代码时,我发现一个很难解释的错误。有人知道发生了什么事吗 当我尝试as.POSIXct(“1940-06-01”)或as.POSIXlt(“1940-06-01”)时,我总是 as.POSIXlt.character(x,tz,…)中的错误: 字符串不是标准的明确格式 但是,当我尝试其他日期时,没有错误 >as.POSIXlt(“1940-06-25”) [1] “1940-06-25 CDT” >同于POSIXlt(“1940-06-03”) [1] “1940-06-25 C
as.POSIXct(“1940-06-01”)
或as.POSIXlt(“1940-06-01”)
时,我总是
as.POSIXlt.character(x,tz,…)中的错误:
字符串不是标准的明确格式
但是,当我尝试其他日期时,没有错误
>as.POSIXlt(“1940-06-25”)
[1] “1940-06-25 CDT”
>同于POSIXlt(“1940-06-03”)
[1] “1940-06-25 CDT”
事实上,如果我再加一个参数,就没有错误了
>as.POSIXlt(“1940-06-01”,tz=“GMT”)
[1] “1940-06-01格林尼治标准时间”
>同于POSIXct(“1940-06-01”,tz=“GMT”)
[1] “1940-06-01格林尼治标准时间”
我只是想知道为什么R这么讨厌这个特殊的日子?@HongOoi是对的,“夏令时的恶作剧”。1940年6月1日的午夜,只是在某些时区并不存在 最终,由于
“1940-06-01”
被解释为。POSIX*
在特定时区中的功能为“1940-06-01 00:00:00”
,因此我们可以说该时间不存在(根据tzdata时区数据库)
我刚刚尝试了OlsonNames()
中包含的所有562个时区,其中10个时区失败:
str(lappy(head)(OlsonNames(),3),
函数(tz)如.POSIXlt(“1940-06-01”,tz=tz)))
#3人名单
#$:POSIXlt[1:1],格式:“1940-06-01”
#$:POSIXlt[1:1],格式:“1940-06-01”
#$:POSIXlt[1:1],格式:“1940-06-01”
###这一次,如果它工作,则返回“”,如果它出错,则返回tz
tzoops夏令时恶作剧哇,太棒了!这真的很有帮助。非常感谢你的工作。如果这回答了你的问题,请。谢谢