#javascript #html #node.js #express #ejs
#javascript #HTML #node.js #выразить #ejs
Вопрос:
app.get("/test",function(req,res){
var d = new Date();
res.send(d);
});
Это выдает вывод «2019-03-19T04:50:47.710Z», который является UTC, когда я захожу через mydomain / test
app.get("/testejs",function(req,res){
res.render("testejs");});
Мои тестовые файлы ниже-
<%= new Date() %>
Этот ejs при посещении через mydomain / testejs выдает выходные данные —
Вт 19 марта 2019 12:55:52 GMT 0800 (стандартное время Сингапура)
Как это возможно, что new Date () выдает мне два разных выходных данных из ( app.js и testejs.ejs ) но выполняется на том же сервере?
Комментарии:
1. Когда я пытаюсь организовать мероприятие в 9 утра по восточному времени, оно сохраняется в UTC как 01: **: ** . Он должен сохранить его как 3: 30 UTC, поскольку я упорядочиваю его с помощью средства выбора даты в моем браузере.
2. Я попытался изменить серверное время на IST . И когда я проверяю дату с помощью терминала, она показывает мне правильное время в IST. Но в фоновом режиме он сохраняет его как Сингапурское местное время.
3. Кто-нибудь имеет представление о том, почему терминал выдает IST, а сервер сохраняет данные в UTC, вычитая из него 8 часов?
Ответ №1:
new Date().toLocaleString()
Нажмите здесь, чтобы вывести, есть ли
или
new Date(Date.now()).toLocaleString()
Выборка из серверных и интерфейсных ejs nodejs с использованием функции даты 19.03.2019, 10:58:31
Комментарии:
1. getFullYear() Получает год в виде четырехзначного числа (гггг) getMonth() Получает месяц в виде числа (0-11) getDate() Получает день в виде числа (1-31) getHours() Получает час (0-23) getMinutes() Получает минуту (0-59) getSeconds() Получает секунду (0-59) getMilliseconds () Получает миллисекунду (0-999) getTime() Получает время (миллисекунды с 1 января 1970 года) getDay() Получает день недели в виде числовой (0-6) даты.now() Получает время. ECMAScript 5.
2. если вы хотите, чтобы на стороне клиента отображались те же дата и время, тогда вы можете передать данные со стороны сервера на сторону клиента шаг 1: app.js res.render(‘pages/home’,{«serverdate»:новая дата().toLocaleString()}); шаг 2: файл ejs <%= serverdate %>
3. Будем иметь это в виду и попытаемся использовать .tolocalString .
Ответ №2:
Добрый день, помните, что app.js выполняется на стороне сервера, а ejs — в браузере, формат даты браузера отличается от формата сервера.
Комментарии:
1. Согласно документам, EJS — это простой язык шаблонов, который позволяет вам генерировать HTML-разметку с помощью простого JavaScript. Я думаю, что он выполняет файл на сервере и отправляет простой HTML клиенту. Я прав?
2. Вы правы @VikramRay, просто выведите вашу общую переменную, переданную с сервера на клиентский сайт с помощью <%= d %>, и ваш формат будет согласованным.
3. Понял. Спасибо.
Ответ №3:
new Date () генерирует значение даты, которое представляет собой количество миллисекунд с базового времени, обычно 1 января 1970 года. Точное значение зависит от настройки часов на сервере, где генерируется значение.
Это значение может отображаться различными способами.
В зависимости от настроек по умолчанию клиентской среды, которые должны быть в UTC или местном [или каком-либо другом] часовом поясе и в различных форматах.
Обратите внимание, что 04: 50 UTC и 12: 55 GMT 0800 разделены примерно на 5 минут, но в разных часовых поясах. Если бы это были два теста, выполняемые с интервалом в 5 минут, это объяснило бы разницу.
Вместо того, чтобы использовать метод toString () по умолчанию для отображения времени, используйте getTime (), чтобы увидеть, каково исходное число.
Ответ №4:
Они оба являются не двумя разными датами, а одной и той же датой в разных часовых поясах.
Причина разного формата заключается в том, как метод toString() написан для объекта Date, метод toString () написан таким образом, чтобы возвращать дату в формате UTC, поэтому, когда вы отправляете его в браузере, он вызывает toString для даты, поскольку все будет преобразовано в строку перед монтированием.
new Date() вызывает конструктор и возвращает экземпляр date, который также будет иметь все свои методы, однако Date() — это функция, которая возвращает дату в виде строки.
Смотрите примеры ниже
date = new Date('Tue Mar 19 2019 12:55:52 GMT 0800')
console.log(date)
console.log('toString-%s',date.toString())
console.log('toString-%s','' date)
console.log('Tue Mar 19 2019 12:55:52 GMT 0800')
//Managing offsets
console.log(Date('Tue Mar 19 2019 12:55:52 GMT 0800'))
date.setTime(date.getTime() (8-5.5)*60*1000 );
console.log(date)