#javascript #node.js
Вопрос:
Я хочу добавить часы к дате с помощью этой функции:
function addHoursToDate(date, hours) { return new Date(new Date(date).setHours(date.getHours() hours)); } const now = new Date(); console.log('now', now); console.log('then', addHoursToDate(now, 1));
Странная проблема здесь, поэтому мы получаем правильный результат, но если вы используете тот же код на node.js оба журнала одинаковы.
Как я могу это исправить?
Комментарии:
1. Я не получаю того же результата, когда выполняю приведенный выше код. Проверьте еще раз, пожалуйста?
2. Да , я заметил это здесь, и это меня еще больше смущает… пожалуйста, прочтите обновленный вопрос еще раз
3. Я проверил у Node.js на моей машине — регистрируются два разных времени. Как вы запускаете этот код?
4. Всегда устанавливайте часовой пояс на свои даты, чтобы вы, по крайней мере, знали, какие особенности часового пояса вам нужно искать, когда «арифметика времени» не делает того, что вы ожидали.
5. Пожалуйста, взгляните на изображение ..
Ответ №1:
Вы можете сделать это без функции
const now = new Date(); console.log('now', now); now.setHours(now.getHours() 1) console.log('then', now);
или с функцией
function addHoursToDate(date, hours) { date.setHours(date.getHours() hours) return date; } const now = new Date(); console.log('now', now); console.log('then', addHoursToDate(now, 1));
Комментарии:
1. Подожди, Что? Ваше решение работает!!!
2. Так чем же это отличается в Node.js ??
3. теперь.getHours() должен быть date .getHours() в вашей функции…
4. @SaraRee, если вы проверите еще раз, возможно, ваше оригинальное решение работает и сейчас. Скорее всего, это связано с вашей средой, а не с самим кодом.
5. Я постарался упростить для вас эту функцию. некоторое время код ведет себя странно, если написан плохо.