C # получить фактическое время по Гринвичу [дубликат]

Самый короткий путь, который я нашел, следующий:

MultiValueMap queryParams =
            UriComponentsBuilder.fromUriString(url).build().getQueryParams();

UPDATE: UriComponentsBuilder происходит из Spring. Здесь ссылка .

19
задан fiberOptics 26 March 2012 в 10:27
поделиться

2 ответа

У платформы .NET уже есть классы и методы, доступные для преобразования DateTimes между разными часовыми поясами. Посмотрите на методы ConvertTime класса TimeZoneInfo .

Редактирование: когда вы получаете время для ввода в базу данных, предполагая, что оно было создано с правильной информацией о часовом поясе, вы можете легко преобразовать в UTC:

DateTime utcTime = inputDateTime.ToUniversalTime();

Получить timeInfo, как это сделано в вопросе редактирования:

TimeZoneInfo timeInfo = TimeZoneInfo.FindSystemTimeZoneById(GetFromConfig.ManilaTimeZoneKey());

Когда вы отправляете время базы данных пользователю, преобразуйте его в правильный часовой пояс, используя timeInfo.

DateTime userTime = TimeZoneInfo.ConvertTimeFromUtc(dbDateTime, timeInfo);

Лично я бы попытался сохранить эту логику отдельно от методов get / set.

45
ответ дан Michael Freidgeim 18 August 2018 в 20:07
поделиться
TimeZoneInfo infotime = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time (Mexico)");
DateTime thisDate = TimeZoneInfo.ConvertTimeFromUtc(datetimeFromBD, infotime);
3
ответ дан LarsTech 18 August 2018 в 20:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: