gpt4 book ai didi

javascript - Moment 显示相对于当前日期的生日 DAYOFYEAR

转载 作者:行者123 更新时间:2023-11-30 15:28:47 24 4
gpt4 key购买 nike

我在我的 Angular 应用程序中使用 moment(),我需要显示相对于一周当前日期的生日(无论年份如何)。我的服务器将以 YYYY-MM-DD 格式发送本周即将到来的生日列表,我希望这样显示(考虑到今天的日期是 2017 年 3 月 2 日):

BirthDate  - Display it to this year's day of the week
2014-03-01 - Yesterday
2016-03-02 - Today
2015-03-03 - Tomorrow
2014-03-04 - Saturday
etc...

在我的 Angular 1.5 View 中,我可以像这样将数据发送到 dayCheck 函数:

<p ng-repeat="person in birthdays">
Name: {{person.name}} <br>
When: {{vm.dayCheck(person.date)}}
</p>

function dayCheck(date) {
return moment(date).format('DD'); // ?? How can I return the days relative to user's day from this year??
}

我的答案:

这是我发布问题后想到的。它看起来并不优雅,我相信有更好的方法可以做到这一点。但是我必须解决这个问题的工作代码是:

function dayCheck(date) {
var returnData = '';
var birthDayDate = moment(date).format('DD');
if (birthDayDate == moment().format('DD')) {
var returnData = 'Today';
}
else if (birthDayDate == moment().subtract(1, 'days').format('DD')) {
var returnData = 'Yesterday';
}
else if (birthDayDate == moment().add(1, 'days').format('DD')) {
var returnData = 'Tomorrow';
}
else {
var momentDate = moment(date);
var month = momentDate.format('MM');
var date = momentDate.format('DD');
var currentMonth = moment().format('MM');
if (currentMonth == 12 && month == 1) {
var year = moment().add(1, "years").year();
}
else if (currentMonth == 1 && month == 12) {
var year = moment().subtract(1, "years").year();
}
else {
var year = moment().year();
}
var dateFormat = year + '-' + month + '-' + date;
var returnData = moment(dateFormat).format('dddd');
}
return returnData;
}

如果有更好、更优雅的方法来完成上述操作,请务必告诉我。我还怀疑如果生日是闰年的 2 月 29 日,上述操作将失败。

最佳答案

你可以简单地使用 moment calendar() .要自定义格式,请参阅 docs .这是一个工作示例:

var input = ['2014-03-01',
'2016-03-02',
'2015-03-03',
'2014-03-04'];

function dayCheck(date) {
var thisYear = moment().year();
var mom = moment(date).year(thisYear);
return mom.calendar(null, {
sameDay: '[Today]',
nextDay: '[Tomorrow]',
nextWeek: 'dddd',
lastDay: '[Yesterday]',
lastWeek: '[Last] dddd',
sameElse: 'DD/MM/YYYY'
});
}

for(var i=0; i<input.length; i++){
console.log(dayCheck(input[i]));
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>

关于javascript - Moment 显示相对于当前日期的生日 DAYOFYEAR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42555205/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com