Как отобразить клиентские часовые пояса и сокращения часового пояса? - PullRequest
1 голос
/ 10 мая 2011

Я создаю сайт asp.net 2.0. В нем отображаются все зарегистрированные кандидаты с зарегистрированной датой. Я храню всю дату в базе данных как UniversalDate, теперь хочу отобразить дату на основе культуры клиента и часового пояса.

Я могу получить смещение часового пояса, используя javascript, но как правильно отображать сокращение часового пояса, потому что некоторые смещения совпадают.

Так, пожалуйста, дайте мне знать, как я могу это сделать?

1 Ответ

0 голосов
/ 11 мая 2011

Я не уверен, правильно ли я понимаю:

Ваша проблема в том, что вы получаете смещение часового пояса из веб-браузера с помощью функции JavaScript getTimeZoneOffset (), отправляете это на сервер и после отображения вы сталкиваетесьпроблема: какой часовой пояс использовать?

По сути, нет необходимости добавлять указатель часового пояса, если он используется по умолчанию.По умолчанию я имею в виду Local.В этом случае вам нужно заботиться только о правильном смещении.Конечно, это может быть проблемой для исторических данных: если существует более одного часового пояса, в котором (в настоящее время) используется одно и то же смещение, но смещение изменяется на разные даты, вы можете напечатать неправильные дату и время для нескольких записей.

Как этого избежать?Единственный способ - добавить информацию о часовом поясе в профиль пользователя и дать ему возможность выбрать свой часовой пояс из списка.Вы можете легко получить список из TimeZoneInfo (и этот класс вам понадобится для выполнения вычислений; некоторые записи будут продублированы намеренно / по историческим причинам):

// gives you the list of time zones
var timeZones = TimeZoneInfo.GetSystemTimeZones();
foreach(var timeZone in timeZones)
{
    // gives you the UTC offset and list of cities this entry regards to
    // this is the best what you can display to user
    string name = timeZone.DisplayName;
    // ...
}

Если вы хотитеИспользуя этот метод, вы можете добавить информацию, которая гласит: «Все даты и время соответствуют ... часовому поясу. Измените свой часовой пояс здесь».Вот и все.
Единственная проблема, которую я имею, свойство DisplayName - предположить, что оно дает мне локализованное имя, но оно всегда показывает мне имя в текущей культуре сервера: /

...