R as.POSIX错误,无法转换特定日期

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

当我调试我的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 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夏令时恶作剧哇,太棒了!这真的很有帮助。非常感谢你的工作。如果这回答了你的问题,请。谢谢