使用"格式" as.Date()中的参数

时间:2017-04-13 13:11:15

标签: r as.date

我试图转换" 07,29,30"使用R。

中的as.Date()转换为日期格式

(请注意,字符串的格式为" mm,dd,yy",即1930年7月29日)

所以我使用了以下代码:

as.Date("07,29,30", format = "%m,%d,%y")

但我回归的那一年是2030年,而不是1930年。 如何告诉R将值转换为一个世纪前的日期?

4 个答案:

答案 0 :(得分:2)

我还会投入:

# use this library
library(lubridate)

# convert to the format (your way or you acn use lubridate)
dateconvert <- as.Date("07,29,30", format = "%m,%d,%y") 

# get the year
inputYear <- year(dateconvert)

# convert the year
year(dateconvert) <- ifelse(inputYear > 2000, 1900 + (inputYear %% 100), inputYear)

答案 1 :(得分:2)

因为00到68之间的年份值被编码为20世纪。 从strptime文档来看,似乎就是这样的原因。

  

&#34;没有世纪的年份(00-99)。输入时,值00到68是前缀   到20和69到99乘19 - 这是2004年规定的行为   和2008年POSIX标准,但他们也说'预计会在   从2位数年份推断出的默认世纪的未来版本   变化”&#34;

您可以使用以下代码重新编码。

d <- as.Date("07,29,30", format = "%m,%d,%y")

> as.Date(ifelse(d > today(), format(d, "19%y-%m-%d"), format(d)))
[1] "1930-07-29"

答案 2 :(得分:1)

要解决此问题,请使用strtotime()date()

$originalDate = "2010-03-21";
$newDate = date("d-m-Y", strtotime($originalDate));

答案 3 :(得分:1)

尝试以下方法: 格式(as.Date(“07,29,30”,格式=“%m,%d,%y”),“19%y-%m-%d”)