POSIXct 从 12 小时时间戳中去除秒数

POSIXct Strips Seconds from 12-hour Timestamp

我正在尝试将 12 小时时间戳转换为 R 中的 POSIXct 对象。出于某种原因,它会在转换后去掉秒数。

## timestamp
chk = '17-MAY-16 04.51.34.000000000 PM'

## convert
as.POSIXct(chk, format = '%d-%b-%y %I.%M.%S.%OS %p', tz = 'America/New_York')
[1] "2016-05-17 16:51:00 EDT"

我做错了什么吗?

它不去掉秒数。它只是遵循 打印和格式化 的默认设置 包括亚秒。

举个例子

  • 实际上有亚秒条目
  • options(digits.secs) 设置正确的会话中运行
  • 更正了您在格式字符串中遇到的一个错误

演示:

R> options(digits.secs=6)    # important to tell R we want subsecs
R> input <- '17-MAY-16 04.51.34.123456 PM'
R> as.POSIXct(input, '%d-%b-%y %I.%M.%OS %p', tz = 'America/New_York')
[1] "2016-05-17 16:51:34.123456 EDT"
R> 

如果我们重置 digits.secs=0,它会回退到仅整秒(对于许多设置来说,这毕竟是一个很好的默认值,尽管有人可能会争辩说 %0S 可以覆盖它...)

R> options(digits.secs=0)    # reset
R> as.POSIXct(input, '%d-%b-%y %I.%M.%OS %p', tz = 'America/New_York')
[1] "2016-05-17 16:51:34 EDT"
R> 

另请注意格式字符串的细微变化。不要同时使用 %S%OS