以 AM/PM 格式解析日期时间

  • 本文关键字:日期 时间 格式 AM PM r
  • 更新时间 :
  • 英文 :


我正在尝试在R中解析AM/PM格式的日期时间。我发现"%p"可以处理这个问题。但是,当我尝试这样做时:

mydate <- as.POSIXct("01.01.1970 01:00:00 PM", format="%d.%m.%Y %H:%M:%S %p", tz = "UTZ")
mydate
[1] "1970-01-01 01:00:00 UTZ"
> as.numeric(mydate)
[1] 3600

这显然是凌晨 1 点。我本来期望输出:

[1] "1970-01-01 13:00:00 UTZ"
[1] 46800

我错过了什么?

它被认为是凌晨 1 点而不是下午 1 点,因此您可以获得 3600 作为输出。

as.POSIXct("01.01.1970 01:00:00 PM", format="%d.%m.%Y %H:%M:%S %p", tz = "UTC")
#[1] "1970-01-01 01:00:00 UTC"

?strptime的文件说

%p 区域设置中的 AM/PM 指示器。与 %I 一起使用,而不是与 %H 一起使用。某些区域设置中的空字符串(如果用于此类区域设置中的输入,则行为未定义(。

您需要使用%I而不是%H

mydate <- as.POSIXct("01.01.1970 01:00:00 PM", format="%d.%m.%Y %I:%M:%S %p", 
tz = "UTC")
as.numeric(mydate)
#[1] 46800

lubridate的替代方案

library(lubridate)
seconds(mdy_hms("01.01.1970 01:00:00 PM"))
#[1] "46800S"

最新更新