我试图转换" 07,29,30"使用R。
中的as.Date()转换为日期格式(请注意,字符串的格式为" mm,dd,yy",即1930年7月29日)
所以我使用了以下代码:
as.Date("07,29,30", format = "%m,%d,%y")
但我回归的那一年是2030年,而不是1930年。 如何告诉R将值转换为一个世纪前的日期?
答案 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”)