提问人:Akronix 提问时间:11/16/2023 最后编辑:zx8754Akronix 更新时间:11/16/2023 访问量:27
将有效的午夜日历时间转换为 POSIXct,然后转换为文本并返回 POSIXct 会导致 NA?
Converting valid midnight calendartime to POSIXct and then to text and back to POSIXct results in NA?
问:
假设您在文本类中获得了一个正好在午夜的日期时间,例如:“2023-11-16 00:00:00”,并且您使用 as 创建了一个具有该日期时间的 POSIXct 对象。POSIXct.然后,使用 as.character() 将其转换为文本,因此 as.character() 擦除对应于“00:00:00”的最后一部分,结果为“2023-11-16”。现在,您将 POSIXct 与“%Y-%m-%d %H:%M:%S”格式日期一起使用,令人惊讶的是,它将输出转换为 NA,这不是初始值。
让我用代码向你展示它,以便更清楚:
> datetime = "2022-03-12 00:00:00"
> posix = as.POSIXct(datetime, format="%Y-%m-%d %H:%M:%S",tz="Europe/Madrid")
> posix
[1] "2022-03-12 CET"
> as.POSIXct(as.character(posix), format="%Y-%m-%d %H:%M:%S",tz="Europe/Madrid")
[1] NA
或者,在一行中:
> as.POSIXct(as.character(as.POSIXct(datetime, format="%Y-%m-%d %H:%M:%S",tz="Europe/Madrid")), format="%Y-%m-%d %H:%M:%S",tz="Europe/Madrid")
[1] NA
我希望将日期时间的文本版本转换回 POSIXct 会产生初始值。但是,相反,它会导致 NA,这会破坏我的以下代码。
我通过使用 strftime() 函数将 POSIXct 转换为文本来暂时修复它,但我希望另一个函数,如 as.character(),它与时区无关。
不知何故与作为有关。POSIXct 日期时间包括午夜。
答: 暂无答案
评论