如何将今天的日期和时间显示为上午 9 点并持续到第二天?

How to display today's date and time as 9 am and continue till next day?

我正在做一个反应 project.I 想将今天的日期和时间显示为“上午 9 点”。这必须保持不变,直到时间为第二天上午 9 点。之后它应该显示时间为上午 9 点以及当天的日期,并一直持续到第二天上午 9 点,依此类推。

 <span>Last Updated: {moment().format('MMMM Do YYYY,') + " 9:00 am"}</span>

以上代码显示时间为上午9点,甚至在第二天的时间为上午9点之前。它应该看起来像当前时间和日期只在每天上午 9 点更新。

这就是您要找的吗? ;)

const getLastStartOfDay = (startOfDayHour) => {
  let todayStartOfDay = new Date();
  todayStartOfDay.setHours(startOfDayHour, 0, 0, 0);

  let yesterdayStartOfDay = new Date(todayStartOfDay);
  yesterdayStartOfDay.setDate(yesterdayStartOfDay.getDate() - 1);

  let dt = new Date();
  const displayDate =
    dt.getHours() < startOfDayHour ? yesterdayStartOfDay : todayStartOfDay;

  return displayDate;
};

console.log("LastStartOfDay: ", getLastStartOfDay(9));

此代码创建一个函数,用于在给定时间检索格式化日期。如果未指定小时,它将使用当前小时。它将 return 今天的日期,除非时间在 9 点之前,在这种情况下它将 return 昨天的日期。对于“长”日期,该格式将使用当前用户的本机格式。 HTML 显示所需的结果,控制台记录当天和当前小时 9 点之前发生的情况。小时由用户的时区决定。

function getDateAtNine(forceHour) {
  let now = new Date();
  const hour = forceHour == null ? now.getHours() : forceHour;
  if (hour < 9) {
    now = new Date(now.getFullYear(), now.getMonth(), now.getDate() - 1);
  }
  return new Intl.DateTimeFormat(undefined, {
    dateStyle: 'long'
  }).format(now);
}

console.log(getDateAtNine(8)); // shows what will print at 8 am on today's date
console.log(getDateAtNine()); // shows what will print at the current hour on today's date

document.querySelector('#dateat9').textContent = getDateAtNine();
<span id="dateat9"></span><span id="nineam">,&nbsp;9:00 am</span>