首页 > 解决方案 > 如何显示星期几/时间/营业时间状态?

问题描述

尝试使用 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()) );

标签: javascripthtml

解决方案


正如其他人所建议的那样,您可以使用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()));


推荐阅读