"May 17, 2017"、“17/5/2017”或“17-5-17 05:24:39”之类的格式可以用在 as.POSIXlt 中吗?

Can format like "May 17, 2017", "17/5/2017" or "17-5-17 05:24:39" be used in as.POSIXlt?

我刚读到 POSIXltPOSIXct 之间的区别,据说 POSIXlt 是一种混合文本和字符格式,如“May, 6 1985”、“1990-9” -1”或“1/20/2012”。当我尝试这样的事情时,我得到一个错误

as.POSIXlt("May, 6 1985")
# character string is not in a standard unambiguous format

(如何)我们可以将上述格式的日期提交给POSIXlt?以下消息来源称这种格式有效(如果我没看错的话):1, 2.

阅读 ?strptime 以了解指定时间格式的所有详细信息。在这种情况下,您需要 %b(月份名称)、%d(月份日期)、%Y(4 位数年份)。 (这仅适用于英语语言环境设置,因为月份名称为 locale-specific。)

as.POSIXlt("May, 6 1985", format = "%b, %d %Y")

如果您混合输入甲酸盐,您可以使用 lubridate 包中的 parse_date_time

x <- c("May, 6 1985", "1990-9-1", "1/20/2012")

y <- lubridate::parse_date_time(x, c("ymd", "mdy", "dmy"))

str(y)
# POSIXct[1:3], format: "1985-05-06" "1990-09-01" "2012-01-20"

注意 c("ymd", "mdy", "dmy") 因为这决定了先找到先转换的顺序。考虑到 6-1-2000 会在 dmy 之前遇到 mdy 有效,所以这意味着它将是 6 月 1 日而不是 1 月 6 日。