Как конвертировать время между часовыми поясами (UTC в EDT)?

Вы можете установить формат в aspx, просто добавьте свойство «DateFormatString» в свой BoundField.

DataFormatString="{0:dd/MM/yyyy hh:mm:ss}"
10
задан Dirk Vollmar 8 June 2009 в 13:25
поделиться

3 ответа

Восточное летнее время - это не название «полного» часового пояса - это "половина" часового пояса, по сути, всегда на 4 часа отстает от UTC. (Возможно, для этого есть подходящая терминология, но я не знаю об этом.)

Почему вы хотите использовать EDT в то время, когда не применяется летнее время? Если вам нужен настраиваемый часовой пояс, который всегда имеет одинаковое смещение относительно UTC, используйте TimeZoneInfo.CreateCustomTimeZone .

Обратите внимание, что если вы используете часовой пояс по восточному стандарту ( TimeZoneInfo.FindSystemTimeZoneById ("Eastern Стандартное время ») ), тогда летнее время будет применяться соответствующим образом (т.е. летом).

Например:

TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");

// Prints True
Console.WriteLine(tzi.IsDaylightSavingTime(new DateTime(2009, 6, 1)));
// Prints False
Console.WriteLine(tzi.IsDaylightSavingTime(new DateTime(2009, 1, 1)));
24
ответ дан 3 December 2019 в 16:30
поделиться

Я бы сказал, что вы должны использовать UTC для расчета периодов времени, чтобы избежать проблем с переходом на летнее время, а затем использовать LocalTime только для отображения.

DateTime.ToLocalTime для UTC к любому часовому поясу, а затем DateTime.ToUniversalTime для преобразования местного времени в UTC.

Редактировать после комментария 1

Полагаю ли я, что вы показываете часовой пояс, отличный от часового пояса сервера?

Если вы используете веб-страницы для доступа к серверу, используйте HttpRequest.UserLanguages, чтобы помочь создать объект CultureInfo и использовать его для анализа вашего объекта DateTime. Полное объяснение см. Здесь: Ссылка Microsoft для отображения времени локального пользователя для веб-страниц.

Если вы используете архитектуру клиент-сервер, тогда, если вызов LocalTime находится на стороне клиента, он будет отображать LocalTime для клиент. Затем вы конвертируете его в UTC, чтобы отправить обратно на свой сервер.

В любом случае вашему серверу не нужно знать, где находится клиент, поэтому, если у вас несколько клиентов в разных часовых поясах, все вычисления будут совпадать. Это также позволит вам отображать время в любом часовом поясе, который вы хотите, используя различные объекты культуры.

Edit 2 скопировал мой второй комментарий

Вы можете получить данные о времени в формате UTC с сервера. Затем вы можете преобразовать его с помощью DateTime.ToLocalTime или DateTime.ToUniversalTime в соответствии с требованиями. Если ты' re, включая даты, и необходимо учитывать, скажем, американские MM / dd / yyyy и европейские форматы dd / MM / yyyy, вы можете использовать класс CultureInfo для анализа значения DateTime соответственно. Похоже, что работы больше, чем у вас сейчас, но это будет означать, что если вы снова переместите сервер, вам не нужно перекодировать обработку DateTime.

Новая точка

Еще одна точка, на которую стоит обратить внимание это синхронизация часов между сервером и клиентами, использующая NTP (сетевой протокол времени) или SNTP (простой сетевой протокол времени), если это достаточно точно. Я не знаю, какую ОС вы используете, но она используется службами времени Windows Server для синхронизации сетей.

но это будет означать, что если вы снова переместите свой сервер, вам не нужно перекодировать обработку DateTime.

Новая точка

Еще одна точка, на которую следует обратить внимание, - это синхронизация часов между сервером и клиентами, использующими NTP (сеть Протокол времени) или SNTP (простой протокол сетевого времени), если он достаточно точен. Я не знаю, какую ОС вы используете, но она используется службами времени Windows Server для синхронизации сетей.

но это будет означать, что если вы снова переместите свой сервер, вам не нужно перекодировать обработку DateTime.

Новая точка

Еще одна точка, на которую следует обратить внимание, - это синхронизация часов между сервером и клиентами, использующими NTP (сеть Протокол времени) или SNTP (простой протокол сетевого времени), если он достаточно точен. Я не знаю, какую ОС вы используете, но она используется службами времени Windows Server для синхронизации сетей.

1
ответ дан 3 December 2019 в 16:30
поделиться

Ковбойский метод состоит в том, чтобы взять время UTC, вычесть из него четыре часа секунд (смещение часового пояса), отформатировать его с помощью функции форматирования UTC и поставить метку «EDT» на нем.

Если вам нужно иногда использовать летнее время, а в другое время - стандартное время, либо создайте справочную таблицу с датами переключения, либо используйте какую-нибудь функцию календаря.

0
ответ дан 3 December 2019 в 16:30
поделиться
Другие вопросы по тегам:

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