Что мне нужно сохранить в базе данных, чтобы можно было конвертировать в UTC? - PullRequest
0 голосов
/ 05 октября 2011

Моя проблема: у меня много данных, связанных с датой (по местному времени), и мне нужно преобразовать ее в UTC.Это выглядит так:

class Data
{
  int id; //Some id for database
  DateTime time; //Time in local time, i need to convert it to utc
}

//Converting:
1)Find this id in database and extract some info (which excatly?)
2)Convert time to UTC

Мой вопрос: какие данные мне нужно хранить в базе данных для правильного преобразования времени?

Моя версия: сохранить целочисленную разницу вчасов между местным временем и UTC и преобразовать, добавив его к местному времени.Но это подходящее решение?

Ответы [ 2 ]

1 голос
/ 05 октября 2011

Общепринятое решение - всегда сохранять дату в формате UTC, а затем преобразовывать ее в местное время при загрузке или отображать ее пользователю

0 голосов
/ 05 октября 2011

Ведение целочисленной разницы недостаточно, потому что это не делает различий между, например, летним временем (DST) и не-DST.

Лучший способ - сохранить часовой пояс.Универсальная и очень хорошо поддерживаемая система часовых поясов: Olson Tz .

Это ссылки по названиям крупных городов, которые представляют часовой пояс.Например, в определенное время будет Америка \ Los_Angeles.Обратите внимание, что это включает как дневной, так и не дневной свет в зависимости от сохраненной даты.Так что вам не нужно знать, когда в игру вступает дневной свет - это включено в часовой пояс Олсона.

Смотрите здесь тоже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...