Я ищу рекомендации по отображению времени в веб-приложении в часовом поясе, отличном от текущего часового пояса пользователя.
Мы храним наши даты / время в формате UTC / GMT вбазы данных, поэтому нет необходимости форматировать время для UTC / GMT или текущего часового пояса пользователя.Однако в других ситуациях нам нужно отображать время с точки зрения произвольного часового пояса (т. Е. Каждая дата / время на этой странице находится в восточном направлении, независимо от того, находится ли пользователь на западном побережье, в центре, на востоке,так далее.).
В прошлом мы сохраняли смещения или информацию о часовом поясе, затем выполняли вычисления в серверном коде в .Net, или же мы делали некоторые клиентские манипуляции в javascript, которых я предпочел бы избежать, поскольку все этостановится очень зависимым от JavaScript и браузера пользователя.Я хотел бы знать лучший способ сделать это в более клиентском / MVC-тип приложения.
Вот пример:
- Дата хранится в дБ: 1302790667 (Чт, 14 апреля 2011 14:17:47 GMT)
- Дата конвертации, отображаемая для клиента в центральном часовом поясе: Чт, 14 апреля 09:17:47 2011
- Дата, которую я действительно хочу отобразить, всегда в восточном часовом поясе: четверг, 14 апреля 10:17:47 2011
В приведенном выше примере легко получить время в формате UTC (# 1) или в текущем часовом поясе пользователя (#2) но получить №3 сложнее.Мои варианты выглядят так:
- Сохранение смещений или часовых поясов в БД и выполнение расчетов на клиенте - это то, что мы делали в прошлом с .Net, но в клиенте это выглядит еще более беспорядочнымбоковой код - это путь, который мы сейчас пытаемся избежать.
- Выполните преобразование на сервере и отправьте полную дату для отображения клиенту - клиент получает строку ("Чт, 14 апреля 10:17:472011" ).Это работает, но не очень гибко.
- Выполните преобразование на сервере, разбейте его на части и отправьте их клиенту, а затем соедините.(«{DayOfWeek: чт, месяц: апрель, день: 14, час: 10, минута: 17}»).Это дает нам правильные данные и дает нам больше гибкости в форматировании даты, но кажется немного неправильным для этого сценария.
Есть другие варианты вариантов?Как другие справляются с подобными ситуациями?Спасибо.