从时间戳中提取日期的最简单方法

28

考虑以下时间戳

timestamp <- ymd_hms("2011-08-10 14:00:00", tz = "Pacific/Auckland")

> timestamp
[1] "2011-08-10 14:00:00 NZST"

如何从日期字符串2011-08-10中获取日期部分并确保这是一个正确的日期而不是字符串?

显然使用lubridate::day(timestamp)在这里会失败。


8
只需执行 as.Date 函数。 - akrun
4
我觉得你正在寻找 lubridate::date。与 as.Date 不同的是,date 使用分配时区中存在的日期,而不是首先转换为 UTC(这是 as.Date 的默认设置,尽管它可以接受一个 tz 参数)。 - alistaire
3
floor_date(timestamp, "day") 的结果是一个带有正确时区的 POSIXct 类型。 - Erwan LE PENNEC
我认为你现在也可以使用lubridate和as_date,而不是as_datetime。通过mutate(day=as_datetime(timestamp))这个语句,它可以在管道中正确运行。 - Bill Perry
3个回答

30

这可能是最简单的方法:

date(timestamp)

它将返回一个日期类,而不是一个字符串。


14

使用“日期”代替“天”

lubridate::date(timestamp)

4

现在也有 data.tableas.IDate() 函数:

timestamp <- "2011-08-10 14:00:00"
data.table::as.IDate(timestamp)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接