将存储在字符和数字向量中的日期转换为 Date 或 POSIXct 对象(请参阅 tz
参数)。这些函数可以识别任意非数字分隔符以及无分隔符。只要格式顺序正确,即使输入向量包含不同格式的日期,这些函数也能正确解析日期。请参阅示例。
用法
ymd(
...,
quiet = FALSE,
tz = NULL,
locale = Sys.getlocale("LC_TIME"),
truncated = 0
)
ydm(
...,
quiet = FALSE,
tz = NULL,
locale = Sys.getlocale("LC_TIME"),
truncated = 0
)
mdy(
...,
quiet = FALSE,
tz = NULL,
locale = Sys.getlocale("LC_TIME"),
truncated = 0
)
myd(
...,
quiet = FALSE,
tz = NULL,
locale = Sys.getlocale("LC_TIME"),
truncated = 0
)
dmy(
...,
quiet = FALSE,
tz = NULL,
locale = Sys.getlocale("LC_TIME"),
truncated = 0
)
dym(
...,
quiet = FALSE,
tz = NULL,
locale = Sys.getlocale("LC_TIME"),
truncated = 0
)
yq(..., quiet = FALSE, tz = NULL, locale = Sys.getlocale("LC_TIME"))
ym(..., quiet = FALSE, tz = NULL, locale = Sys.getlocale("LC_TIME"))
my(..., quiet = FALSE, tz = NULL, locale = Sys.getlocale("LC_TIME"))
参数
- ...
-
可疑日期的字符或数字向量
- quiet
-
合乎逻辑的。如果是
TRUE
,函数将在不显示常规消息的情况下进行计算。 - tz
-
时区指示器。如果
NULL
(默认),则返回 Date 对象。否则,时区属性设置为tz
的 POSIXct 。 - locale
-
要使用的区域设置,请参阅locales。在 Linux 系统上,您可以使用
system("locale -a")
列出所有已安装的区域设置。 - truncated
-
整数。可以截断的格式数。
细节
在异构日期格式的情况下,ymd()
系列根据输入向量的子集猜测格式。如果输入向量包含许多缺失值或非日期字符串,则子集可能不包含有意义的日期,并且不会猜测日期时间格式,从而导致 All formats failed to parse
错误。在这种情况下,请参阅parse_date_time()
以获得更灵活的解析接口。
如果 truncated
参数非零,ymd()
函数还会检查截断的格式。例如, ymd()
和 truncated = 2
也会解析不完整的日期,例如 2012-06
和 2012
。
注意:ymd()
函数族基于parse_date_time()
因此直接将数字月份放入内部 C 解析器,但使用base::strptime()
按字母顺序排列的月份。这意味着一些base::strptime()
的限制继承于润滑的解析器。例如,截断的格式(如%Y-%b
) 不会被解析。数字截断格式(例如%Y-%m
)正确处理润滑的 C 解析器。
从 1.3.0 版本开始,润滑的解析函数不再返回显示它们用于解析输入的格式的消息。您可以通过设置来更改此设置lubridate.verbose
选项TRUE
和options(lubridate.verbose = TRUE)
.
也可以看看
parse_date_time()
用于更灵活的低级机制。
例子
x <- c("09-01-01", "09-01-02", "09-01-03")
ymd(x)
#> [1] "2009-01-01" "2009-01-02" "2009-01-03"
x <- c("2009-01-01", "2009-01-02", "2009-01-03")
ymd(x)
#> [1] "2009-01-01" "2009-01-02" "2009-01-03"
ymd(090101, 90102)
#> [1] "2009-01-01" "2009-01-02"
now() > ymd(20090101)
#> [1] TRUE
## TRUE
dmy(010210)
#> [1] "2010-02-01"
mdy(010210)
#> [1] "2010-01-02"
yq('2014.2')
#> [1] "2014-04-01"
## heterogeneous formats in a single vector:
x <- c(20090101, "2009-01-02", "2009 01 03", "2009-1-4",
"2009-1, 5", "Created on 2009 1 6", "200901 !!! 07")
ymd(x)
#> [1] "2009-01-01" "2009-01-02" "2009-01-03" "2009-01-04" "2009-01-05"
#> [6] "2009-01-06" "2009-01-07"
## What lubridate might not handle:
## Extremely weird cases when one of the separators is "" and some of the
## formats are not in double digits might not be parsed correctly:
if (FALSE) ymd("201002-01", "201002-1", "20102-1")
dmy("0312-2010", "312-2010")
#> Warning: 1 failed to parse.
#> [1] "2010-12-03" NA
相关用法
- R lubridate ymd_hms 解析包含年、月、日、小时、分钟和秒组成部分的日期时间。
- R lubridate year 获取/设置日期时间的年份部分
- R lubridate DateTimeUpdate 更改日期对象的组成部分
- R lubridate stamp 基于人性化模板设置日期和时间格式
- R lubridate interval 用于创建和操作 Interval 对象的实用程序
- R lubridate is.difftime x 是 difftime 对象吗?
- R lubridate as_date 将对象转换为日期或日期时间
- R lubridate date 获取/设置日期时间的日期部分
- R lubridate round_date 日期时间对象的舍入、取整和取整方法
- R lubridate make_difftime 创建一个 difftime 对象。
- R lubridate is.timespan x 是时间长度吗?
- R lubridate with_tz 获取不同时区的日期时间
- R lubridate mplus 在日期中添加和减去月份,但不超过新月份的最后一天
- R lubridate cyclic_encoding 日期时间的循环编码
- R lubridate as.interval 将对象更改为间隔
- R lubridate second 获取/设置日期时间的秒部分
- R lubridate quarter 获取日期时间的财政季度和学期
- R lubridate posix_utils 各种 POSIX 实用程序
- R lubridate date_decimal 将小数转换为日期
- R lubridate as.duration 将对象更改为持续时间
- R lubridate hour 获取/设置日期时间的小时部分
- R lubridate minute 获取/设置日期时间的分钟部分
- R lubridate month 获取/设置日期时间的月份部分
- R lubridate duration 创建一个持续时间对象。
- R lubridate leap_year 一年是闰年吗?
注:本文由纯净天空筛选整理自Hadley Wickham等大神的英文原创作品 Parse dates with year, month, and day components。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。