【发布时间】:2017-03-02 12:11:58
【问题描述】:
我在我的 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 视图中,我可以像这样将数据发送到 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 日,我也怀疑上述方法会失败。
【问题讨论】:
标签: javascript angularjs date momentjs