使用润滑剂解析12小时

时间:2016-01-19 21:24:39

标签: r lubridate

我正在尝试使用lubridate解析12小时。如果我跑

library(lubridate)
times <- c("1:30 AM",  "6:29 AM",  "6:59 AM",  "9:54 AM", "2:45 PM")
hm(times)

我得到了

[1] "1H 30M 0S" "6H 29M 0S" "6H 59M 0S" "9H 54M 0S" "2H 45M 0S"

请注意,不使用AM / PM指定。但是,如果时间字符串还包含日期,则解析工作

ymd_hm(paste("01-01-01", times))
[1] "2001-01-01 01:30:00 UTC" "2001-01-01 06:29:00 UTC"
[3] "2001-01-01 06:59:00 UTC" "2001-01-01 09:54:00 UTC"
[5] "2001-01-01 14:45:00 UTC"

在我看来,时间解析功能:hmhms,...无法识别AM / PM,但日期函数可以识别。是否可以在不通过日期的情况下进行12小时解析?

[我知道我可以通过解析字符串来做到这一点,但我想知道它可能在lubidate]

1 个答案:

答案 0 :(得分:3)

这两个对象属于不同的类,每个类都是为特定目的而设计的。

使用第一个函数创建一个period类对象。这种类如果设计用于表示时间,比如比赛时间,或者&#34; Bolt运行100米的小时数?&#34; 0小时0分9秒58,等等。

请参阅:

a <- hm(times)
class(a)
[1] "Period"
attr(,"package")
[1] "lubridate"

具有函数ymd_hm的第二个对象创建了一个类对象:

b <- ymd_hm(paste("01-01-01", times))
class(b)
[1] "POSIXct" "POSIXt" 

这类对象旨在表示&#34; time&#34;,在公历(或者其他类型的日历)中。它还解析了AM / PM,这对于在12小时内区分一天的小时数至关重要。