Дата автоматически конвертируется в окне браузера - PullRequest
0 голосов
/ 03 января 2019

В настоящее время у меня возникла проблема при печати даты на веб-сайте, над которым я работаю.Дата извлекается через Node.js (модуль mysql) из базы данных MySql, где она хранится в формате MySql DATETIME.Используемым механизмом просмотра является Handlebars.

Проблема состоит в том, что дата автоматически конвертируется в окне браузера, и в настоящее время мне не везет, когда я пытаюсь выяснить, где и как это происходит.Console.logging поле 'date', полученное из запроса базы данных узла, дает мне тип даты 2018-12-27T18:00:00.000Z, но в браузере эта дата печатается как Thu Dec 27 2018 19:00:00 GMT+0000 (Coordinated Universal Time).Я уже пытался выполнить date = date.toString() преобразование на стороне узла, но безрезультатно.

-

Это код на стороне node.js:

app.get( '/blog' , ( req , res ) => {
    db.get().query( `SELECT * FROM posts` , ( error , results ) => {
        res.render( "./blog.hbs" , 
            { 
                pageTitle : "xx - My Blog" ,
                posts     : results              
        } );
    } );
} );

Заранее спасибо всем, кто хочет помочь мне решить эту загадку.Хорошего дня.

1 Ответ

0 голосов
/ 03 января 2019

База данных использует формат ISO DateTime для хранения метки времени, что является довольно стандартным и безопасным. Помещение этой метки времени в JS Date Constructor не должно приводить к каким-либо преобразованиям.

Однако, когда вызывается метод toString () объекта Date, он обычно генерирует метку времени, принимая во внимание смещение часового пояса локального компьютера. И часовой пояс также добавляется в конце временной метки.

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

Если вы хотите вывести ту же самую метку времени на стороне клиента, что и на стороне сервера, используйте метод Date.toISOString ().

...