@UniverseElement

Как управлять локализацией дат?

Проблематика - ввод и отображение в браузере дат в формате местного времени.

Вопросы:
- какой общепринятый подход?
- как это реализовать в ASP.NET?

Начиная с .Net 6, при сохранении дат в базу PostgreSQL используется UTC-формат (если не включать legacy-режим).

На стороне сервера текущее время мы теперь получаем так:
DateTime.UtcNow

А на стороне клиента (в javascript), мы преобразуем дату к локальному времени таким образом:
new Date(editDate).toLocaleString('ru', { timeZoneName: 'short' })


Как быть, если представление формируется на стороне сервера (определить часовой пояс клиента и преобразовать считанную из БД дату в его формат)?

Как сохранять даты, введённые в input-поле, пользователями разных часовых поясов?
  • Вопрос задан
  • 82 просмотра
Пригласить эксперта
Ответы на вопрос 2
AshBlade
@AshBlade
Просто хочу быть счастливым
Даты в БД хранишь в формате UTC. Можно даже без таймзон. Главное, чтобы все представляли единый формат/точку отчета.

На клиенты отправляешь эту дату. JS может создавать Date используя ISO формат - клиент эту дату парсит и используя свою временную зону парсит.

В общем, смысл следующий:
- В БД даты хранятся относительно UTC
- На и с клиента даты отправляются в UTC формате - представление даты с учетом таймзоны будет на стороне пользователя/UI, а коде бизнес-логики работа ведется с UTC

Клиент лучше знает, какая у него таймзона и локаль
Ответ написан
NikFaraday
@NikFaraday
Student full-stack Developer
Вы можете использовать DatetimeOffset в связке с регистрацией локализации в Dependency Injection и Middleware
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы