Как отобразить сегодняшнюю дату и время как 9 утра и продолжить до следующего дня?

#javascript #reactjs #time #momentjs

Вопрос:

Я занимаюсь проектом react.Я хочу отобразить сегодняшнюю дату и время как «9 утра» .Это должно оставаться неизменным до 9 утра следующего дня. После этого он должен отображать время как 9 утра вместе с датой этого дня и продолжать это до следующего дня 9 утра и так далее.

 lt;spangt;Last Updated: {moment().format('MMMM Do YYYY,')   " 9:00 am"}lt;/spangt;   

Приведенный выше код отображает время как 9 утра еще до того, как наступит 9 утра следующего дня. Это должно выглядеть так, как будто текущее время и дата обновляются каждый день только в 9 утра.

Комментарии:

1. Какое будет время тогда, когда наступит 9 утра следующего дня?

2. Он должен отображать дату этого дня и время как 9 утра.

3. Пожалуйста, предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.

4. Я думаю, вы можете просто напечатать «9 утра» и «сегодняшнее число». Это то, чего ты хочешь.

5. Вам нужно проверить текущую дату и время, чтобы узнать, прошло ли 9 утра. Если нет, то покажите предыдущий день. Если да, то покажи сегодня.

Ответ №1:

Этот код создает функцию, которая извлекает отформатированную дату в заданный час. Если час не указан, он будет использовать текущий час. Он вернет сегодняшнюю дату, если только этот час не наступит раньше 9, и в этом случае он вернет вчерашнюю дату. Формат будет использовать собственное форматирование текущего пользователя для «длинной» даты. HTML показывает желаемый результат, консоль регистрирует то, что происходит до 9 в текущий день, и текущий час. Время определяется часовым поясом пользователя.

 function getDateAtNine(forceHour) {  let now = new Date();  const hour = forceHour == null ? now.getHours() : forceHour;  if (hour lt; 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(); 
 lt;span id="dateat9"gt;lt;/spangt;lt;span id="nineam"gt;,amp;nbsp;9:00 amlt;/spangt; 

Ответ №2:

Это то, что вы ищете? 😉

 const getLastStartOfDay = (startOfDayHour) =gt; {  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() lt; startOfDayHour ? yesterdayStartOfDay : todayStartOfDay;   return displayDate; };  console.log("LastStartOfDay: ", getLastStartOfDay(9));