该lubridate软件包提供了方便的功能,用于格式化字符串中的日期和日期时间对象。函数是
| 信件 | 要解析的元素 | 基数R等效 |
|---|---|---|
| ÿ | 年 | %y, %Y |
| m(带有y和d) | 月 | %m,%b,%h,%B |
| d | 天 | %d, %e |
| H | 小时 | %H, %I%p |
| m(带有h和s) | 分钟 | %M |
| s | 秒 | %S |
例如,ymd()用于分析日期,然后是年份,然后是月份,然后是月,然后是月份"2016-07-22",或者ymd_hms()用于分析年,月,日,小时,分钟,秒等订单中的日期时间,例如"2016-07-22 13:04:47"。
该功能能够识别大多数分离器(例如/,-和空格),无需额外的参数。它们还可以使用不一致的分隔符。
日期函数返回class的对象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。所有datetime函数都可以接受tz类似于as.POSIXct或的时区参数strptime,但默认为"UTC"而不是本地时区。
datetime函数返回class的对象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带有-style%或lubridatedatetime函数名称的样式e.g"ymd hms"。将接受异类数据的订单向量,并猜测是否合适。 |
| parse_date_time2 | 默认POSIXct; 如果lt = TRUE,POSIXlt | 严格。仅接受有限集中的strptime令牌(带或不带%)。 |
| fast_strptime | 默认POSIXlt; 如果lt = FALSE,POSIXct | 严格。仅接受%-delimitedstrptime带有分隔符(令牌-,/,:从有限的一组,等等)。 |
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以了解格式化令牌的信息。