javascript - 如何显示星期几/时间/营业时间状态?
问题描述
尝试使用 HTML / JS 显示如下内容:现在是星期一上午 11:03 — 我们目前正在营业
我尝试了一些不同的东西,但只能部分地工作。我想显示工作日/一天中的时间/以及商店是开门还是关门。
这些将是时间:
Monday 10 a.m. - 5 p.m.
Tuesday 12 - 7 p.m.
Wednesday 10 a.m. - 5 p.m.
Thursday 10 a.m. - 5 p.m.
Friday 10 a.m. - 5 p.m.
Saturday 10 a.m. - 2 p.m.
Sunday Closed
function getDayOfWeek(date) {
const dayOfWeek = new Date(date).getDay();
var dateWithouthSecond = new Date();
dateWithouthSecond.toLocaleTimeString([], {hour: '2-digit', minute:'2-digit'});
return isNaN(dayOfWeek) ? null :
['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'][dayOfWeek];
}
document.getElementById("demo").innerHTML = ( "It's " + getDayOfWeek(Date.now()) );
解决方案
正如其他人所建议的那样,您可以使用Date.prototype.toLocaleString()
并传递weekday
参数来检索星期几。
const OperatingHours = {
'Monday' : { 'open': 10, 'close': 17 },
'Tuesday' : { 'open': 12, 'close': 19 },
'Wednesday' : { 'open': 10, 'close': 17 },
'Thursday' : { 'open': 10, 'close': 17 },
'Friday' : { 'open': 10, 'close': 17 },
'Saturday' : { 'open': 10, 'close': 14 },
'Sunday' : { 'open': 1, 'close': -1 }
};
const greeting = (date) => {
const now = new Date(),
weekday = now.toLocaleString('en-us', { weekday: 'long' }),
formattedTime = now.toLocaleTimeString('en-US',
{ hour: '2-digit', minute: '2-digit' }),
currHour = now.getHours(),
{ open, close } = OperatingHours[weekday],
isOpen = currHour >= open && currHour <= close;
return isOpen
? `It's ${weekday} ${formattedTime} — we are currently open.`
: `Sorry, it's ${weekday} ${formattedTime} — we are currently closed.`;
};
console.log(greeting(new Date()));
推荐阅读
- excel - 如何将行中的重复数据转置为列
- rust - 在 Rust 中接受来自克隆的 TcpListener 线程的连接是否安全/可移植?
- java - Kotlin 读取 XML 的子级
- amazon-web-services - 如何在 Elastic Beanstalk 中为不同环境使用不同的 .ebextensions 配置文件?
- javascript - 尝试使用 async/await 转换两个 Promise 函数
- mongodb - MongoDB聚合:如果null或不存在,则保留先前文档的值
- json - 如何在颤动中更改对地图的响应类型
- python - Python - 将数据保存在已经存在的大 xlsx 文件中的最快方法
- linux - 通过 ssh 跳转主机和目标主机的不同公钥
- r - 如何建立模型来预测缺失值。?