我正在使用 MomentJS在我的应用程序中确定商家当前是否营业。
我按以下格式存储时间:
{ open_time: "Thu Jan 01 1970 08:00:00 GMT-0500 (Eastern Standard Time)" },
{ close_time: "Thu Jan 01 1970 23:00:00 GMT-0500 (Eastern Standard Time)" }
在我的代码中:
let openTime = moment(weekday.open_time).format('HH:MM'); // 08:00
let closeTime = moment(weekday.close_time).format('HH:MM'); // 23:00
let currentTime = moment(new Date()).format('HH:MM'); // 20:00
// Determine if business is currently open
let isOpenNow = currentTime >= openTime && currentTime < closeTime ? true : false
除非企业的打烊时间
是午夜或更晚的时间,否则这会正常工作,例如:
open_time: 08:00
close_time: 02:00 // The next day
有没有一种简单的方法可以立即解决这个问题(或者一些简单的 jane javascript 逻辑)?
最佳答案
如果您对日期不感兴趣,则将打开和关闭时间存储为时间,而不是日期。然后将打开和关闭时间转换为方便的格式并与其他时间(可能是当前时间)进行比较。例如
var times = [{cafe: 'Sally\'s',
open_time:'08:00', // 8am - 11pm same day
close_time: '23:00'},
{cafe: 'Fred\'s',
open_time:'20:00', // 8pm - 6am next day
close_time: '06:00'}];
function isOpen(date, times) {
// Helper to convert HH:mm to milliseconds
function toMS(s) {
s = s.split(':');
return s[0]*3.6e6 + s[1]*6e4;
}
// Copy date so don't affect original
var d = new Date(+date);
// Get time since midnight for date
var t = date - d.setHours(0,0,0,0);
return t >= toMS(times.open_time) &&
t <= toMS(times.close_time);
}
// Test
var now = new Date().toLocaleString(undefined,{hour12:true,hour:'numeric',minute:'2-digit'})
times.forEach(function(obj){
console.log(`It's ${now} and ${obj.cafe} is ${isOpen(new Date(), obj)? 'open':'closed'}.`);
})
关于javascript - 在 MomentJS 中确定午夜后的营业时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49142893/