Javascript计算日期中的年差异错误?
我试图理解JavaScript中的日期。但是我不能得到它 我创建了一个函数,它接受两个日期,并根据日期差返回一个值 以下是全部代码:Javascript计算日期中的年差异错误?,javascript,time,Javascript,Time,我试图理解JavaScript中的日期。但是我不能得到它 我创建了一个函数,它接受两个日期,并根据日期差返回一个值 以下是全部代码: function checkDate(birth_date, download_date) { let yearDiff = download_date.getFullYear() - birth_date.getFullYear(); console.log(yearDiff); if (yearDiff > 5) return &
function checkDate(birth_date, download_date) {
let yearDiff = download_date.getFullYear() - birth_date.getFullYear();
console.log(yearDiff);
if (yearDiff > 5) return "Not Eligible";
if (yearDiff < 5) return "Eligible";
if (yearDiff == 5) {
// Eligible only if 5 years or low
// If diff is Exact 5 Years Check if Bday is on download date ?
// First Check Month
let monthDiff = download_date.getMonth() - birth_date.getMonth();
if (monthDiff >= 1) {
return "Not Eligible"
}
if (monthDiff <= -1) {
return "Eligible"
}
if (monthDiff = 0) {
// Check Day
let dateDiff = download_date.getDay() - birth_date.getDay();
if (dateDiff <= 0) {
return "Eligible"
} else {
return "Not Eligible"
}
}
}
}
let dob_string = "DOB: 14/09/2016";
let dl_string = "Download Date: 03/11/2020";
let dob = new Date(dob_string.substr(dob_string.indexOf("DOB:") + 4, 11).trim());
let dld = new Date(dl_string.substr(dl_string.indexOf("Download") + 14, 11).trim());
console.log(checkDate(dob,dld));
功能检查日期(出生日期、下载日期){
让yearDiff=下载_date.getFullYear()-出生_date.getFullYear();
控制台日志(yearDiff);
如果(yearDiff>5)返回“不合格”;
如果(年差<5)返回“合格”;
如果(年差==5){
//仅在5年或5年以下时合格
//如果差异为5年,请检查Bday是否在下载日期?
//第一个检查月
让monthDiff=download_date.getMonth()-birth_date.getMonth();
如果(monthDiff>=1){
返回“不合格”
}
如果(monthDiff那么我测试了它,甚至子字符串也创建了无效日期。
所以我写了这封信给你:
功能检查日期(出生日期、下载日期){
让yearDiff=下载_date.getFullYear()-出生_date.getFullYear();
控制台日志(yearDiff);
如果(yearDiff>5)返回“不合格”;
如果(年差<5)返回“合格”;
如果(年差==5){
//仅在5年或5年以下时合格
//如果差异为5年,请检查Bday是否在下载日期?
//第一个检查月
让monthDiff=download_date.getMonth()-birth_date.getMonth();
如果(monthDiff>=1){
返回“不合格”
}
if(monthDiff问题在于新日期
构造函数dd/mm/yyyy
格式,并且在不同浏览器上实现不同。您需要做的是将其转换为有效格式。
一种方法是将其拆分并传递到构造函数中,如下所示:
let dob_string = "DOB: 14/09/2016";
let dl_string = "Download Date: 03/11/2020";
let dob = dob_string.substr(dob_string.indexOf("DOB:") + 4, 11).trim();
const splitDOB = dob.split('/')
const validDate = new Date(
parseInt(splitDOB[2], 10),
parseInt(splitDOB[1], 10) - 1,
parseInt(splitDOB[0], 10)
);
第二个参数中的-1
是因为月份是。然后您可以使用自己函数的逻辑进行处理。
但我强烈建议使用第三方库,例如在JS中处理日期/时间时,这可能与您的问题没有多大关系,但是如果`如果(monthDiff=0){`看起来不正确,如果您正在传递“DOB:14/09/2016”
到日期
,那么问题可能就在这里。新日期(“DOB:14/09/2016”)
绝对无效。@nibble你检查了整个代码了吗?我想你没有检查。我正在使用子字符串从字符串中提取日期。@RenéDatenschutz哇哇!!谢谢空处理是怎么回事?如果字符串不包含所需的模式,程序将崩溃。只有模式匹配,isNan才会工作。