我正试图获得最近一个星期五的开始时间(上午12:00或上午00:00)。这一直有效:
moment().isoWeekday(5).startOf('day').toDate()
但它只适用于星期五 - 星期日,星期一早上它将参考即将到来的星期五,在这种情况下,这将有效:
moment().add('-1', 'week').day(5).startOf('day').toDate()
但我需要它是动态的,如果可能的话,在一行中完成,我不会在当天进行任何检查。
有没有办法总是得到最近的星期五?无论当天是什么。
编辑如果在星期五执行,我也会尝试让它返回当天(星期五)。
答案 0 :(得分:3)
如果您不想使用图书馆,那就非常直接了
var date = new Date();
while ( date.getDay() !== 5 ) date.setDate(date.getDate() -1);
console.log(date)

随着时间
var date = moment();
var friday = date.day(date.day() >= 5 ? 5 :-2);
如果毫秒准确度并不重要,你可以拨打moment()
两次使其成为一行(但我会更多地使用变量)
var friday = moment().day(moment().day() >= 5 ? 5 :-2);
答案 1 :(得分:0)
检查一下:
var date = moment().utc().isoWeekday(5);
if(moment().day() < 5) {
date = date.add(-1, 'week');
}
console.log('Recent friday starts:', date.startOf('day').toDate());
console.log('Recent friday ends:', date.endOf('day').toDate());
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.15.1/moment.js"></script>