我如何从strptime中提取年份?

时间:2015-08-12 19:19:24

标签: r datetime

我有时间采用这种格式:

t <- "4/2/2004 12:45"

I can extract day and month using these two lines:

strptime(t, "%m/%d/%Y %H:%M", tz="UTC")$day
strptime(t, "%m/%d/%Y %H:%M", tz="UTC")$mday

但这并没有给我我想要的岁月。我给了我没有世纪的一年:

strptime(t, "%m/%d/%Y %H:%M", tz="UTC")$year

我怎样才能准确地获得这一年?像1987年,2012年等,而不是87和12。

如果还有其他功能可供使用,我也可以。

3 个答案:

答案 0 :(得分:6)

添加1900.请参阅?POSIXlt详细信息部分,了解详情。

> tm <- "4/2/2004 12:45"
> strptime(tm, "%m/%d/%Y %H:%M", tz="UTC")$year
[1] 104
> strptime(tm, "%m/%d/%Y %H:%M", tz="UTC")$year + 1900
[1] 2004

答案 1 :(得分:2)

使用lubridate来满足您所有直观的时间戳处理需求:

library(lubridate)
t <- "4/2/2004 12:45"
t2 <- mdy_hm(t) # parsing format: month-day-year_hour-minute
day(t2)
yday(t2)
year(t2)

答案 2 :(得分:2)

使用基础包:

t <- "4/2/2004 12:45"
as.numeric(format(as.Date(t, "%m/%d/%Y %H:%M", tz="UTC"), "%Y"))

结果是:

[1] 2004