说我有一系列的生日
var bdates = ['1956-12-03', '1990-03-09',...]
Run Code Online (Sandbox Code Playgroud)
我将通过一个函数将每一个函数返回到今天(或从现在开始)7天内生日那天的日期?我现在拥有的是:
var bdays = _.map(bdates, function(date) {
var birthDate = new Date(date);
var current = new Date();
var diff = current - birthDate; // Difference in milliseconds
var sevenDayDiff = Math.ceil(diff/31557600000) - (diff/31557600000); //1000*60*60*24*365.25
if (sevenDayDiff <= 0.01916495550992)
return date;
else
return false;
});
Run Code Online (Sandbox Code Playgroud)
值0.01995183087435是根据51周内的毫秒数除以52周内的毫秒数确定的,然后减去该比率应为'sevenDayDiff'变量.
不幸的是,我的JSFIDDLE并没有完全正确.这有很多问题.我的sevenDayDiff可能是错误的价值.还有闰年问题,即使我除以365.25.我可能只是以错误的方式解决这个问题.
这是在Web应用程序中进行的,因此管理员可以向7天内过生日的人发送电子邮件.欢迎任何提示或建议.
var bdates = ['1956-12-03', '1990-03-09', '1970-02-14'];
var now = moment('2015-02-10');
var birthDates = [];
bdates.forEach(function(birthDate) {
var birthDay = moment(birthDate).year(now.year());
var birthDayNextYear = moment(birthDate).year(now.year() + 1);
var daysRemaining = Math.min(Math.abs(birthDay.diff(now, 'days')), Math.abs(birthDayNextYear.diff(now, 'days')));
if((daysRemaining >= 0) && (daysRemaining <= 7)) {
birthDates.push(birthDate);
}
});
document.write(JSON.stringify(birthDates));Run Code Online (Sandbox Code Playgroud)
<script src="http://momentjs.com/downloads/moment.min.js"></script>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
712 次 |
| 最近记录: |