我有一个以字符串形式给出的开始时间。
let opens = '08:00';
我想测量不同日期的分钟差异。
let date1 = moment('1945.10.20 17:30');
let date2 = moment('1970.01.08 12:00');
// should result 570 (9.5h) and 240 (4h)
我天真地尝试
moment(opens, 'HH:mm').diff(date1, 'm');
但我意识到它会为当天的时间安排一个日期。
答案 0 :(得分:2)
在同一天获取片刻物品,但需要时间。从那里做比较。如果您知道打开的格式始终为HH:mm
,那么您可以执行此操作:
let opens = '08:00';
let opensTime = moment(opens, 'HH:mm');
let date1 = moment('1945.10.20 17:30', 'YYYY.MM.DD HH:mm');
let openDate1 = date1.clone().set({
hour: opensTime.hour(),
minute: opensTime.minute()
});
然后比较:
date1.diff(openDate1, 'm') === 570;
或者,您可以在opens
- opens.split(":")
上进行拆分 - 获取小时和分钟。
答案 1 :(得分:0)
如果我正确阅读此内容,您希望将日期对象的小时数与上午8点进行比较。
Javascript从日期对象中获取getHours()和getMinutes()。
Hence you can do date.getHours() - 8, and date1.getMinutes()
答案 2 :(得分:0)
您可以修改opens
变量吗?
let date1 = moment(new Date('1945.10.20 17:30'));
let date2 = moment(new Date('1970.01.08 12:00'));
function timeDifference(end, opensHour, opensMinute) {
var start = end.clone().set({
"hour": opensHour,
"minute": opensMinute
});
return {
"start": start,
"end": end,
"difference": end.diff(start, "minutes")
};
}
console.log(timeDifference(date1, 8, 0));
console.log(timeDifference(date2, 8, 0));

<script src="http://momentjs.com/downloads/moment.js"></script>
&#13;
基本上你需要做的是,一旦你有结束日期,创建一个新的时刻,但是你的opens
开始时间相同。然后做差异。
或者,你也可以减去:
let opens = "08:00";
let date1 = moment(new Date('1945.10.20 17:30'));
let date2 = moment(new Date('1970.01.08 12:00'));
function timeDifference(opens, end) {
// get the start
var start = moment(opens, "HH:mm");
// find how many minutes from midnight the start is
var startFromMidnight = start.diff(start.clone().startOf("day"), "minutes");
// find how many minutes from midnight the end is
var endFromMidnight = end.diff(end.clone().startOf("day"), "minutes");
// subtract the two to find the difference
return endFromMidnight - startFromMidnight;
}
console.log(timeDifference("08:00", date1));
console.log(timeDifference("08:00", date2));
&#13;
<script src="http://momentjs.com/downloads/moment.js"></script>
&#13;