使用 lubridate 從字串中解析日期和日期時間
lubridate 包提供了方便的功能,可以從字串格式化日期和日期時間物件。這些功能是排列的
| 信件 | 要解析的元素 | 基準 R 等價物 | 
|---|---|---|
| ÿ | 年 | %y,%Y | 
| m(帶 y 和 d) | 月 | %m,%b,%h,%B | 
| d | 天 | %d,%e | 
| H | 小時 | %H,%I%p | 
| m(帶 h 和 s) | 分鐘 | %M | 
| 小號 | 秒 | %S | 
例如,ymd() 用於解析具有年份的日期,然後是月份,然後是日期,例如 2016-07-22 或 ymd_hms(),用於解析訂單年,月,日,小時,分鐘,秒的日期時間,例如 2016-07-22 13:04:47。
這些函式能夠識別大多數分隔符(例如/,- 和空格),而無需其他引數。它們也適用於不一致的分隔符。
日期
日期函式返回類 Date 的物件。
library(lubridate) 
mdy(c(' 07/02/2016 ', '7 / 03 / 2016', ' 7 / 4 / 16 '))
## [1] "2016-07-02" "2016-07-03" "2016-07-04"
ymd(c("20160724","2016/07/23","2016-07-25"))    # inconsistent separators
## [1] "2016-07-24" "2016-07-23" "2016-07-25"
日期時間
實用功能
可以使用 ymd_hms 變體解析日期時間,包括 ymd_hm 和 ymd_h。所有日期時間函式都可以接受類似於 as.POSIXct 或 strptime 的 tz 時區引數,但預設為 UTC 而不是本地時區。
datetime 函式返回類 POSIXct 的物件。
x <- c("20160724 130102","2016/07/23 14:02:01","2016-07-25 15:03:00")
ymd_hms(x, tz="EST")
## [1] "2016-07-24 13:01:02 EST" "2016-07-23 14:02:01 EST"
## [3] "2016-07-25 15:03:00 EST"
ymd_hms(x)
## [1] "2016-07-24 13:01:02 UTC" "2016-07-23 14:02:01 UTC"
## [3] "2016-07-25 15:03:00 UTC"
解析器功能
lubridate 還包括三個函式,用於使用 as.POSIXct 或 strptime 等格式化字串解析日期時間:
| 功能 | 輸出等級 | 格式化接受的字串 | 
|---|---|---|
| parse_date_time | POSIXct | 靈活。將接受 strptime風格的%或lubridate日期時間函式名稱樣式,例如ymd hms。將接受異構資料的訂單向量並猜測哪個是合適的。 | 
| parse_date_time2 | 預設 POSIXct; 如果 lt = TRUE,POSIXlt | 嚴格。僅接受來自有限集合的 strptime令牌(有或沒有%)。 | 
| fast_strptime | 預設 POSIXlt; 如果 lt = FALSE,POSIXct | 嚴格。只接受來自限定套裝的分隔符( -,/,:等)的%分隔的strptime代幣。 | 
x <- c('2016-07-22 13:04:47', '07/22/2016 1:04:47 pm')
parse_date_time(x, orders = c('mdy Imsp', 'ymd hms'))
## [1] "2016-07-22 13:04:47 UTC" "2016-07-22 13:04:47 UTC"
x <- c('2016-07-22 13:04:47', '2016-07-22 14:47:58')
parse_date_time2(x, orders = 'Ymd HMS')
## [1] "2016-07-22 13:04:47 UTC" "2016-07-22 14:47:58 UTC"
fast_strptime(x, format = '%Y-%m-%d %H:%M:%S')
## [1] "2016-07-22 13:04:47 UTC" "2016-07-22 14:47:58 UTC"
parse_date_time2 和 fast_strptime 使用快速 C 解析器來提高效率。
有關格式化標記,請參閱 ?parse_date_time。