我有以下 UNIX 时间字符串:
“1575824800.169”
如果您这次进行转换,您将在在线 unix 转换器上得到:12/08/2019 17:06。
然而,当尝试使用以下代码在 R 中转换它时:
as.POSIXct("1575824800.169", format='%d/%m/%Y %H:%M', origin = "1970-01-01")
Run Code Online (Sandbox Code Playgroud)
我返回的值为NA
我很难理解为什么上面的代码不起作用 - 我在这里研究了不同的答案,但没有找到unix时间字符串在字符串中的句点(点)之后有3位数字的答案。也许这就是问题所在?
您没有编码日期的字符串(如使用formatas.POSIXct 的参数所暗示的),而是一个数字。如果我们将字符串重新转换为数字并去掉格式参数,我们会得到预期的结果(尽管我们可能需要使用参数tz来指定时区)
as.POSIXct(1575824800.169, origin = "1970-01-01")
Run Code Online (Sandbox Code Playgroud)
返回:
[1] "2019-12-08 18:06:40 CET"
Run Code Online (Sandbox Code Playgroud)
添加时区参数
as.POSIXct(1575824800.169, origin = "1970-01-01", tz = "UCT")
Run Code Online (Sandbox Code Playgroud)
返回:
[1] "2019-12-08 17:06:40 UTC"
Run Code Online (Sandbox Code Playgroud)
关于将字符串转换为数字as.numeric:正如@IceCreamToucan 指出的那样,这并不重要。只有“打印”值发生变化,内部表示保持不变,因此结果仍然正确
as.POSIXct(as.numeric("1575824800.169"), origin = "1970-01-01", tz = "UCT")
Run Code Online (Sandbox Code Playgroud)
返回相同的结果:
[1] "2019-12-08 17:06:40 UTC"
Run Code Online (Sandbox Code Playgroud)