[英]Time differences in hours and minutes via Moment.js
我想使用 moment.js 计算 2 次之间的时间差
我一直在使用 JS 来归档它。
function timeDiffCalc(dateFuture, dateNow) {
let diffInMilliSeconds = Math.abs(dateFuture - dateNow) / 1000;
// console.log(dateFuture,dateNow);
const days = Math.floor(diffInMilliSeconds / 86400);
diffInMilliSeconds -= days * 86400;
// console.log('calculated days', days);
const hours = Math.floor(diffInMilliSeconds / 3600) % 24;
diffInMilliSeconds -= hours * 3600;
// console.log('calculated hours', hours);
const minutes = Math.floor(diffInMilliSeconds / 60) % 60;
diffInMilliSeconds -= minutes * 60;
// console.log('minutes', minutes);
let difference = '';
if (days > 0) {
difference += (days === 1) ? `${days} day, ` : `${days} days, `;
}
difference += (hours === 0 || hours === 1) ? `${hours} hour, ` : `${hours} hours, `;
difference += (minutes === 0 || hours === 1) ? `${minutes} minutes` : `${minutes} minutes`;
return difference;
}
当前代码
var CurrentDate = new Date();
var nextFeedString = '2021-03-22 18:27:08';
nextFeedString = nextFeedString.replace(' ', 'T');
var timeLeft = timeDiffCalc(new Date(nextFeedString), new Date());
它如上图所示,但我正在通过 moment.js 寻找更好/更短的方法。
新代码
var startTime = moment(new Date(), "HH:mm:ss a");
var endTime = moment(nextFeedString, "HH:mm:ss a");
var duration = moment.duration(endTime.diff(startTime));
var hours = parseInt(duration.asHours());
var minutes = parseInt(duration.asMinutes())%60;
var timeLeft = hours + ' hour and '+ minutes+' minutes.'; <<< it seems worse than what I got
我应该使用 moment.js 的更好的 function 吗?
function timeLeftFromNow(endTime) {
var nowTime = moment(new Date(), "HH:mm:ss a");
var endTime = moment(endTime, "HH:mm:ss a");
var duration = moment.duration(endTime.diff(nowTime));
var hours = parseInt(duration.asHours());
var minutes = parseInt(duration.asMinutes())%60;
var timeLeft = `${hours} hour${hours > 1 && "s"} and ${minutes} minute${minutes > 1 && "s"}`;
return timeLeft;
}
var nextFeedString = '{{ $nextFeed }}';
nextFeedString = nextFeedString.replace(' ', 'T');
var timeLeft = timeLeftFromNow(nextFeedString);
我有
你的时刻代码就是这样做的方法,
您可以将最后一行替换为:
const timeLeft = `${hours} hour${hours > 1 ? "s" : ""} and ${minutes} minute${minutes > 1 ? "s" : ""}.`
并用 const 替换所有 var 以更 ES6 友好!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.