Преобразование даты и времени UTC в базе данных MySQL в часовой пояс клиентов без каких-либо библиотек

уже около 3 дней я пытаюсь преобразовать UTC Datetime, например (2020-04-18 13:41:18) во время клиентов

Например, для меня это будет: 2020-04-18 15:41:18.

Вывод: сб, 18 апреля 2020 г., 13:41:18 GMT+0200 (Mitteleuropäische Sommerzeit)

Я получаю всегда неправильное время.

В базе данных я использую DateTime как тип данных (MySQL) и сохраняю этот тип даты: 2020-04-18 13:41:18

Мой код здесь:


let unixtime = Date.parse("<?php echo $publish_date ?>") / 1000; 

let publish_date = new Date(unixtime * 1000).toString();

document.write(publish_date);

Что я делаю не так?


person 1ntelligence0    schedule 18.04.2020    source источник
comment
Вам не нужны специальные библиотеки, и я действительно не понимаю, почему это проблема. см. developer.mozilla.org/de/docs/Web /JavaScript/Reference/ используйте его, чтобы добавить или вычесть нужное время. у сервера есть свой часовой пояс, который тоже надо включить остальное математика   -  person nbk    schedule 18.04.2020
comment
Сервер автоматически сохраняет дату и время как дату и время UTC, поэтому нет специального часового пояса.   -  person 1ntelligence0    schedule 18.04.2020
comment
Смотри, я дал тебе свой ответ, как я это сделал. Вы также можете взглянуть на medium.com/@toastui/< /а>   -  person nbk    schedule 18.04.2020
comment
Я уже знаю эту ссылку. Теперь я знаю все ссылки, связанные с javascript и датой. Я слишком глуп, чтобы реализовать это. Вы можете помочь мне ?   -  person 1ntelligence0    schedule 18.04.2020
comment
О чувак. Я до сих пор не знаю, как вычислить разницу. Он дает мне -120 и теперь???? @нбк   -  person 1ntelligence0    schedule 18.04.2020


Ответы (1)


Это покажет ваше время unix и добавит или вычтет часовой пояс пользователей в минутах.

Он использует функцию jkavascript getTimezoneOffset.

let unixtime = Date.parse("<?php echo $publish_date ?>") / 1000; 

let publish_date = new Date(unixtime * 1000).toString();

var newDateObj = new Date();
newDateObj.setTime(date1.getTime() + (publish_date.getTimezoneOffset() * 60 * 1000));

document.write(newDateObj);

Вы также можете использовать setTime для своей publish_date, но я не знаю, нужно ли вам время где-либо еще

person nbk    schedule 18.04.2020
comment
Спасибо! Но я уже нашел другое решение, которое я опубликую. - person 1ntelligence0; 18.04.2020