提问人:MarPor 提问时间:10/7/2023 更新时间:10/7/2023 访问量:34
js - 如何比较(之前/之后)一天中的时间(忽略日期)
js - how to compare (is before / after) two datetimes in terms of time of the day (ignoring date)
问:
我在项目中有 dayjs 库,但找不到一种在两个 datetime 对象之间比较一天中时间的好方法。
我得到的最接近的是:dayjs(dateTime1).isAfter(dateTime2, 'hour'),但这没有考虑分钟,导致不正确的边缘情况。
谢谢
我可能只是正则表达式时间部分,然后做一些比较,但我希望我不需要做任何转换。我不需要使用 dayjs。可以是纯 js。
答:
2赞
T.J. Crowder
#1
如果您只想要分钟分辨率,简单的方法是将小时值乘以 60 并将分钟值相加,从而获得自午夜以来的分钟数:。然后你可以比较这些数字。hours * 60 + minutes
下面是一个使用 JavaScript 内置类型的简单示例(尽管现在我应该使用):Date
Temporal
function compareTime(dt1, dt2) {
const mins1 = dt1.getHours() * 60 + dt1.getMinutes();
const mins2 = dt2.getHours() * 60 + dt2.getMinutes();
return mins2 - mins1;
}
// First date's time-of-day is before second date's time-of-day
console.log(compareTime(
new Date("2023-10-07T10:30"),
new Date("2023-09-17T11:30"),
));
// Times-of-day are the same
console.log(compareTime(
new Date("2023-10-07T13:30"),
new Date("2023-09-17T13:30"),
));
// First date's time-of-day is before second date's time-of-day
console.log(compareTime(
new Date("2023-10-07T13:30"),
new Date("2023-09-17T11:30"),
));
对于秒分辨率,它是 .((hours * 60) + minutes) * 60 + seconds
评论