我正在寻找使用moment.js来计算直到下一次下午2点为止的剩余时间。
到目前为止,根据另一个脚本,我发现我有以下内容:
var getTimeLeft = function(){
var now = moment();
var deadline = now.clone().hour(14).minute(0).second(0);
if(now.isAfter(deadline)) {
var tomorrow = moment(new Date()).add(1,'days').hour(14).minute(0).second(0);
console.log(tomorrow.from(now));
}else {
console.log(deadline.from(now));
}
}
getTimeLeft();
如果时间在下午2点之前,则以舍入格式返回时间,即“ 5小时内”
如果时间超过下午2点,则返回“一天”
如何编辑此脚本,以便如果该脚本在下午2点之前运行,我将以"4hrs 57mins"
的格式得到答案而不会四舍五入-如果在第二天它将执行相同的操作,则{{1} }?
欢呼
答案 0 :(得分:1)
实际上 moment.from()
method 总是以该格式返回string
,您无法在hours
和minutes
或{ {1}}。
解决方案:
使用milliseconds
和hours
显示自定义消息的一个小技巧是使用 moment.diff()
method ,它返回minutes
,{ {1}},milliseconds
,seconds
或minutes
。
hours
您只需要指定days
/ tomorrow.diff(now, "hours") + ' hrs, ' + (tomorrow.diff(now, "minutes") % 60) + ' mins'
作为hours
方法的第二个参数,即可获得所需格式的结果。
演示:
这是一个有效的演示:
minutes
.diff()
注意:
当然,您需要添加更多测试以测试仅存在var getTimeLeft = function() {
var now = moment();
var deadline = now.clone().hour(14).minute(0).second(0);
if (now.isAfter(deadline)) {
var tomorrow = moment(new Date()).add(1, 'days').hour(14).minute(0).second(0);
console.log(tomorrow.diff(now, "hours") + ' hrs, ' + (tomorrow.diff(now, "minutes") % 60) + ' mins');
} else {
console.log(deadline.diff(now, "hours") + ' hrs, ' + (deadline.diff(now, "minutes") % 60) + ' mins');
}
}
getTimeLeft();
或仅有<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.7.0/moment.js"></script>
作为差异的情况。