#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));