问题描述
我需要使用lubridate将dob列的fctr格式(例如4/11/64)转换为Marriage内置数据集中的日期格式。我尝试了很多函数,例如strptime,as_date等,但是4/11/64更改为2064年,这对于1964年出生的人来说是不正确的。是否有一个函数可以自动将年份转换为19xx?还是我必须先将字符格式的前导“ 19”放在字符格式之前?
解决方法
我认为您必须自己添加“ 19”,除非您想使用 if (task.isSuccessful()) {
//verify UID here
Toast.makeText(context,"Verification Complete",Toast.LENGTH_SHORT).show();
isVerified=true;
Intent intent = new Intent(context,UserDashboard.class);
startActivity(intent);
finish();
} else {
Toast.makeText(context,"Verification Faild: OTP wrong",Toast.LENGTH_SHORT).show();
}
}
});
:
hydrostats::four.digit.year
(该函数只有几行,所以如果您不想依赖软件包,可以复制它)
hydrostats::four.digit.year(dmy("4/11/64"),year=1900)
否则,您将陷入POSIX标准的困境。 function (x,year = 1968) {
n <- as.numeric(strftime(x,format = "%y"))%%100
Y <- ifelse(n > year%%100,1900 + n,2000 + n)
return(Y)
}
是用于转换两位(或一位)年份以及从"%y"
开始的标准标记:
“%y”无世纪的年份(00-99)。输入时,值00到68为 以20和69为前缀,以19为99前缀-这就是行为 由2018 POSIX标准指定,但它也表示 ‘预计在将来的版本中,默认世纪 从两位数年份推断出的值会发生变化。”
该标准本身可用here:
如果未指定世纪,则[69,99]范围内的值应指1969年至1999年,包括[00,68]范围内的值应指2000年至2068年(包括在内)。
另请参阅:why strptime for two digit year for 69 returns 1969 in python?