Отображение времени из меток времени UTC для пользователей относительно часового пояса - PullRequest
1 голос
/ 21 сентября 2019

У меня есть некоторые записи в базе данных, в которых хранится временная метка времени, в которое она была введена в UTC

# Python
"timestamp": datetime.now(timezone.utc)

Как найти смещение часов пользователя, чтобы настроить для них время?например, я знаю, что я на 11 часов вперед, поэтому я добавляю 11 часов к отметке времени, которую я сейчас делаю в JS.

Я использую Moment.js для отображения относительного времени - см. https://momentjs.com/

Загружено «час назад»

В моем клиентском интерфейсе JS есть функция, которая динамически возвращает форматированное время на основе метки времени UTC базы данных

// JavaScript
// eg. timestamp = 2019-09-20 23:10:18.117246+00:00
return moment(timestamp, "YYYY-MM-DD h:mm:ss").add(11, 'hours').startOf('hour').fromNow();

Должен ли я вычислить 11 часов во внешнем интерфейсе или сделать это в бэкэнде в Python и передать его во внешний интерфейс?

1 Ответ

0 голосов
/ 21 сентября 2019

Чтобы получить смещение, я использовал клиентскую сторону, чтобы выяснить это, если он правильно установлен в их браузере:

this.timeZoneOffset = new Date().getTimezoneOffset() / 60;

// -10 (Australia)

Затем я учел это в своей функции, чтобы вычесть или добавить 10ч.

Примечание. Если оно отрицательное, это означает, что оно действительно должно быть положительным, поэтому в моем случае я бы добавил +10 часов к отметке времени UTC.Если вам нужна большая точность, не делите на 60. Вместо этого у вас будет смещение в минутах.

...