Javascript 如何从date from date now列表中查找下一个生日?
我在为这个问题挣扎?如何从日期列表中找到下一个生日日期? 我得到 但我先抓到Sam是因为他抓到了1992。。但我想先展示1991年2月26日星期四 更新 我的解决方案:Javascript 如何从date from date now列表中查找下一个生日?,javascript,arrays,angular,Javascript,Arrays,Angular,我在为这个问题挣扎?如何从日期列表中找到下一个生日日期? 我得到 但我先抓到Sam是因为他抓到了1992。。但我想先展示1991年2月26日星期四 更新 我的解决方案: sortByDateNoYear(adate, bdate) { let results; const lhdate = moment(adate.birthdayDate); const rhdate = moment(bdate.birthdayDate);
sortByDateNoYear(adate, bdate) {
let results;
const lhdate = moment(adate.birthdayDate);
const rhdate = moment(bdate.birthdayDate);
results =
lhdate.month() > rhdate.month()
? 1
: lhdate.month() < rhdate.month()
? -1
: 0;
if (results === 0) {
results =
lhdate.date() > rhdate.date()
? 1
: lhdate.date() < rhdate.date()
? -1
: 0;
}
return results;
}
[array].sort(this.sortByDateNoYear);
您当前正在使用.getUTCDate按月份的日期进行排序 相反,在比较中使用.getTime 从 getTime方法返回自Unix纪元以来的毫秒数* 此外,如果您使用的是Angular函数,则可以安全地使用arrow函数
myArray.sort((a, b) => {
const dateA = new Date(a.date);
const dateB = new Date(b.date);
return dateA.getTime() - dateB.getTime();
});
您当前正在使用.getUTCDate按月份的日期进行排序 相反,在比较中使用.getTime 从 getTime方法返回自Unix纪元以来的毫秒数* 此外,如果您使用的是Angular函数,则可以安全地使用arrow函数
myArray.sort((a, b) => {
const dateA = new Date(a.date);
const dateB = new Date(b.date);
return dateA.getTime() - dateB.getTime();
});
您需要为所有日期设置同一年,为已过的生日设置下一年。然后你可以比较
myArray.sort(function compare(a, b) {
const now = new Date();
const dateA = new Date(a.date);
dateA.setYear(now.getFullYear());
if (dataA.getTime() - now.getTime() < 0) {
dateA.setYear(now.getFullYear() + 1)
}
const dateB = new Date(b.date);
dateA.setYear(new Date().getFullYear());
dateA.setYear(now.getFullYear());
if (dataB.getTime() - now.getTime() < 0) {
dateB.setYear(now.getFullYear() + 1)
}
return dateA.getTime() - dateB.getTime();
});
您需要为所有日期设置同一年,为已过的生日设置下一年。然后你可以比较
myArray.sort(function compare(a, b) {
const now = new Date();
const dateA = new Date(a.date);
dateA.setYear(now.getFullYear());
if (dataA.getTime() - now.getTime() < 0) {
dateA.setYear(now.getFullYear() + 1)
}
const dateB = new Date(b.date);
dateA.setYear(new Date().getFullYear());
dateA.setYear(now.getFullYear());
if (dataB.getTime() - now.getTime() < 0) {
dateB.setYear(now.getFullYear() + 1)
}
return dateA.getTime() - dateB.getTime();
});
你可以这样试试 常量myArray=[{ 名字:'乔吹', 日期:1992年11月25日星期三 }, { 名字:'山姆笑', 日期:1992年4月16日星期四 }, { 名字:“伊娃lol”, 日期:一九九一年二月二十六日(星期四) } ]; myArray.sorta,b=>{ const ad=new Datea.date.getTime; const bd=new Dateb.date.getTime; 返回ad-bd; }; //console.logthis.usersBirthdayDate;
console.logmyArray 你可以这样试试 常量myArray=[{ 名字:'乔吹', 日期:1992年11月25日星期三 }, { 名字:'山姆笑', 日期:1992年4月16日星期四 }, { 名字:“伊娃lol”, 日期:一九九一年二月二十六日(星期四) } ]; myArray.sorta,b=>{ const ad=new Datea.date.getTime; const bd=new Dateb.date.getTime; 返回ad-bd; }; //console.logthis.usersBirthdayDate;
console.logmyArray;方法.getTime在功能上等同于此方法的.valueOfThis工作,但如果您有一个带有“1998年2月26日,星期四”的方法,它将不再作为except@Seysay对的这个答案是关于如何使用日期进行排序,而不是如何将字符串转换为日期。这就是为什么我要在数组中添加如下内容:{name:'Anna',birthdayDate:'thresday,二月二十六日'}它将不再工作,我是指函数或方法。getTime在功能上等同于。以这种方式工作的值,但如果你有一个“2月26日,星期四,1998年“它不会再像现在这样工作了except@Seysay对的这个答案是关于如何使用日期进行排序,而不是如何将字符串转换为日期。这就是为什么我要在数组中添加如下内容:{name:'Anna',birthdayDate:'thresday,二月二十六日'}它将不再工作,我的意思是该功能只是一个提示->新日期a.date;使用“1992年11月25日星期三”不是标准,在大多数情况下可能有效,但这取决于浏览器对日期字符串的解释。。相反如果你收到的邮件中没有一封解决了你的问题,你也可以接受它;使用“1992年11月25日星期三”不是标准,在大多数情况下可能有效,但这取决于浏览器对日期字符串的解释。。相反如果你收到的信中没有一个能解决你的问题,你也可以接受它。