Создание событий не учитывает 12-часовой формат времени пользователя

Обнаружена небольшая ошибка: при создании события плагин не учитывает локаль пользователя с 12-часовым форматом времени и всегда отображает 24-часовой формат. Это затрудняет ввод событий и повышает риск ошибок для пользователей из США, которые не используют 24-часовой формат.

К счастью, после создания события время отображается корректно.

В остальном плагин выглядит отлично, спасибо :slight_smile:

Также было бы неплохо добавить настройку для ограничения количества напоминаний, которые автор события может установить для него. 5 — это много :sweat_smile:

1 лайк

Спасибо, что указали на это! У меня был аналогичный опыт при вставке даты/времени в тему, где наблюдается та же проблема. Я считаю, что это известная ошибка, и есть объяснение. Ввод следует региону вашего устройства, а не локали, установленной в ваших настройках Discourse. Однако отображение следует вашей локали в настройках Discourse (а также локали любого пользователя, просматривающего ваш пост с событием или датой/временем). Можете ли вы подтвердить это с вашей стороны?

Конечно, было бы менее запутанно и лучше с точки зрения UX, если бы они совпадали для пользователя, создающего событие или добавляющего дату/время в пост.

Вот демонстрация. Обратите внимание на скриншоте ниже на выбранное время 16:00, но в поле ввода указано 16:00. Причина этого в том, что мой регион устройства установлен на Германию (где используется 24-часовой формат), тогда как моя локаль Discourse — US-WA (где используется 12-часовой формат). Ввод, похоже, следует локали устройства.

Это отображается в виде [date=2025-04-01 time=16:00:00 timezone="America/Los_Angeles"] в Markdown, что корректно отображается у меня как 16:00: 2025-04-01T23:00:00Z.

Изменение региона устройства на Соединенные Штаты привело эти два значения в соответствие, но это громоздкий процесс, требующий перезагрузки.


При установленном регионе Соединенные Штаты при вставке даты/времени в тему время ввода также отображается в 12-часовом формате. Markdown остается тем же: [date=2025-04-01 time=16:00:00 timezone="America/Los_Angeles"], и корректно отображается как 16:00: 2025-04-01T23:00:00Z.

2 лайка

Спасибо за подробный ответ (и от такого же уроженца штата Вашингтон, между прочим :))

Итак, эта ошибка касается именно плагина «Вставить событие» (официальный плагин), а не функции «Вставить дату/время» (встроенной). Я полностью понимаю вашу путаницу: когда я впервые попробовал использовать плагин, я тоже нажал на дату/время вместо события и не мог понять, почему событие не создается.

Раз мы оба запутались в этом, есть возможность улучшить интерфейс:

  • В идеальном мире эти функции можно было бы объединить в одну кнопку, которая спрашивает у пользователя, хочет ли он создать событие или указать время. (Однако это потребовало бы значительной переработки кода)
  • Более простой вариант: если кнопка «Событие» располагалась бы непосредственно рядом с кнопкой «Дата/время», а не была скрыта под значком «ещё» (шестерёнка), это, вероятно, сразу предупредило бы пользователя о наличии двух разных сценариев. (Я не проверял, возможно ли это технически, но со стороны реализации это кажется более простым)

Тем не менее, отвечая на ваши вопросы:

  • :white_check_mark: Когда я использую вставить дату/время, у меня действительно отображается 12-часовой формат времени
  • :cross_mark: Требование 24-часового формата возникает только при использовании функции вставить событие

Что касается региональных настроек устройства: я не использую iOS, поэтому не уверен, какой параметр соответствует этому в других операционных системах. (Я работаю под Linux и проверил, что мой locale возвращает значения en_us или en_US.UTF-8… но, возможно, есть какая-то другая скрытая настройка). Можете ли вы подтвердить, что наблюдаете такое же поведение на странице «вставить событие» (а не только на странице «вставить дату/время»?) Похоже, что для этого форума данная функция не включена, поэтому, возможно, вам придётся запустить тестовый экземпляр, хотя, поскольку это официальный плагин, его должно быть легко получить.

3 лайка

О, интересно! Я углубился в тему того, как работает вставка даты/времени, и оказалось, что поведение отличается. :facepalm: Я только что проверил (мой устройство всё ещё показывает регион США) и вижу, что вы абсолютно правы! Всплывающее окно «Добавить событие» действительно запрашивает время в 24-часовом формате, хотя вставка даты/времени теперь использует 12-часовой формат.

Вставка даты/времени — это базовая функция, а «Добавить событие» является частью плагина calendar-and-event. Это совершенно разные функции. Поэтому давайте сосредоточимся на всплывающем окне «Добавить событие», в котором, судя по всему, есть ошибка в пользовательском интерфейсе, которую вы отлично описали в первом сообщении этой темы.

Улучшение интерфейса в меню редактора — это совершенно отдельная тема. Если вы хотите создать новую тему об этом, пожалуйста, не стесняйтесь.

2 лайка

Не очень логично, чтобы эти два механизма отличались друг от друга, но, полагаю, это отдельный вопрос UX!

Это абсолютно необходимо! Это проблема уже давно (и, возможно, заслуживает отдельной темы в ux). Я скрываю иконку «Вставить дату/время», чтобы избежать путаницы, но при этом мы теряем довольно полезный функционал.

1 лайк

Как я уже говорил… пожалуйста, создавайте новые темы. Давайте сосредоточимся только на этой ошибке интерфейса.

2 лайка

Нет проблем, и спасибо за подтверждение ошибки во всплывающем окне добавления события :slight_smile:

Мне казалось, что у меня это уже было раньше, но я не могу это найти. Сейчас сделаю.

1 лайк

Поднимаю тему — у меня тоже возникает эта проблема.

Плагин discourse-calendar использует элемент DateTimeInputRange, но интерфейс, о котором @tobiaseigen упомянул в первом ответе, использует элемент CalendarDateTimeInput.

Для справки: вот реализация DateTimeInputRange, а вот реализация CalendarDateTimeInput.

1 лайк