gpt4 book ai didi

javascript - 在 MomentJS 中确定午夜后的营业时间

转载 作者:行者123 更新时间:2023-11-30 14:44:39 24 4
gpt4 key购买 nike

我正在使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com