Insert Date Timezone всегда UTC; мой часовой пояс игнорируется

Когда я создаю дату с помощью кнопки «Вставить дату», получается что-то вроде:

[date=2019-08-20 time=20:00:00 timezone="Europe/Berlin"]

Мой часовой пояс — Europe/Berlin. Однако в результате HTML отображается «22:00» вместо «20:00».

Если я изменю сгенерированный код на:

[date=2019-08-20 time=20:00:00 timezone=Europe/Berlin]

то всё работает как по маске.

Здесь, на meta.discourse.org, всё работает корректно. Мой форум находится на версии v2.4.0.beta2 +316.

Спасибо.

Давайте попробуем здесь, я во Франции, но часовой пояс тот же

[date=2019-08-20 time=20:00:00 timezone="Europe/Paris"]

2019-08-20T18:00:00Z

[date=2019-08-20 time=20:00:00 timezone=Europe/Paris]

2019-08-20T18:00:00Z

результат:

Вы перенастроили время сервера или часовой пояс, отклонившись от UTC?

Да, как я написал здесь, это работает. Думаю, дело в отличиях между версией здесь и моей. Помню, что это уже работало до нескольких моих обновлений.

Нет, это всё ещё UTC.

Какой у вас браузер? Это не связано с вашим сервером, но правильно ли настроены часы на ВАШЕМ компьютере?

Я протестировал Firefox и Chrome/Chromium на Windows, Linux и Android. В каждом браузере наблюдается одинаковое поведение. Кстати, мои часы всегда настроены на часовой пояс Europe/Berlin.

Попробуйте выполнить это в консоли браузера, который в данный момент открыт на форуме Discourse:

moment.tz.guess()

говорит: "Europe/Berlin"

на моём форуме, а также на meta.discourse.org

Хорошо, изучу в ближайшие дни, спасибо за информацию.

У меня точно такая же проблема! Без кавычек всё работает как по маслу. Но редактор Discourse всегда создаёт “Europe/Berlin” вместо Europe/Berlin — и в предпросмотре тогда отображается неверное время. Можно ли это исправить?

Я всё ещё не могу воспроизвести проблему, что бы я ни пробовал в Chrome или Firefox. Нужно копнуть глубже.

У меня была эта проблема в Safari, Chrome/Firefox ещё не пробовал.

Есть ли какие-либо новости по этой проблеме?

У меня наблюдается такое же поведение, как указано выше. Как только я убираю кавычки, всё работает нормально. Но при их использовании система, похоже, применяет UTC с учётом часового пояса, в котором работает мой клиент.

Кстати, то же самое происходит здесь, когда я указываю в поле часового пояса бессмысленное значение:
[date=2019-08-20 time=20:00:00 timezone="nonsense"]
или
[date=2019-08-20 time=20:00:00 timezone=nonsense]
2019-08-20T20:00:00Z

У меня точно такая же проблема. Похоже, это так или иначе связано с установками на немецком языке.

Кстати, интересный факт: я попытался сбросить настройки, запустив wizard по адресу domain.de/wizard. Там я изменил локаль на English US и прошел весь мастер настройки. При настройке на английский язык вставка времени работает корректно: например, я ввожу 23:15 по немецкому времени, а отображается «Завтра, 23:15 (Europe/Berlin)» — всё верно.

Однако, когда я через мастер возвращаю форум на «Deutsch» и вставляю новую запись с временем, снова появляется эффект сдвига на +1 час. (Время, вставленное при английской настройке, всё ещё отображается правильно.)

Похоже, дело не в времени сервера. Что-то идёт не так при переходе между локалью Europe и UTC.

Готов провести дополнительные тесты или предоставить больше информации, если потребуется.

Discourse запущен в Docker.

Спасибо за дальнейшую помощь!

Небольшое дополнение: я заметил небольшую разницу между моей установкой и этой официальной.

Мы отключили опцию «Разрешить выбор локализации пользователем». Таким образом, пользователи не могут самостоятельно изменить язык. Не знаю, будет ли это полезно.

Как насчёт остальных, кто столкнулся с той же проблемой, а именно @Daniel_Tesla, @lorddevil, @zogstrip, @hewo7: могут ли ваши пользователи изменять настройки локализации интерфейса? Или, на немецком, в разделе Настройки › Общие настройки: Разрешить выбор локализации пользователем: «Разрешить пользователям выбирать собственный язык интерфейса».

  • Разрешить выбор локализации пользователем: активно
  • Разрешить выбор локализации пользователем: неактивно
0 voters

Странно, что текущая локаль влияет на часовой пояс :thinking:

@j.jaffeux, неужели вы исправили это в своих последних правках?

Я с радостью окажу дополнительную помощь в тестировании и отладке, если это потребуется. Если кто-то из команды захочет более внимательно изучить эту тему.

Нет, я посмотрю это завтра

Это должно быть исправлено следующим образом:

:tada: Спасибо за информацию


Более подробный контекст: похоже, что когда экземпляр Discourse установлен на немецкую локаль, мы заменяем кавычки " на немецкие кавычки „“, что нарушало работу нашего парсера.

@gerhard Я пока внес исправление непосредственно в local-dates. Как вы считаете, стоит ли попытаться исправить это выше по цепочке?

  • В функции parseBBCodeTag перед отправкой совпавшей строки?
  • В функции pretty text?