Выбор даты и времени для Windows Forms, привязанный к времени по Гринвичу - PullRequest
0 голосов
/ 15 марта 2010
  • Использование Visual Studio 2008, c #, .net 2.0.

У меня есть клиентское приложение Windows Forms, которое содержит раздел пользовательского интерфейса для планирования, в настоящее время он находится только в лондонском офисе со стандартным элементом управления выбора времени и даты, выбранное время сохраняется в базе данных Великобритании (GMT) и на сервере в Лондоне. Приложение обрабатывает графики.

Требуется развернуть клиента в различных точках мира, Гонконге, Нью-Йорке и т. Д. И разрешить ему настраивать расписания, которые выполняются в соответствии с временем по Гринвичу на лондонском сервере.

У меня будет метка на экране с надписью «расписания заметок - GMT» мне нужен хороший способ представить средство выбора даты и времени, которое всегда отображается и синхронизируется с временем GMT сервера базы данных независимо от того, где клиентское приложение работает глобально .

Предложения о том, как этого добиться? спасибо.

Ответы [ 3 ]

2 голосов
/ 15 марта 2010

Часовой пояс "GMT" неоднозначен. В Windows это относится к часовому поясу Лондона и др. И включает корректировку перехода на летнее время. В Гринвиче в Королевской обсерватории это относится к часовому поясу, который соответствует UTC без корректировки на летнее время.

Ясно, что вы хотите избежать такого рода путаницы. А также большое количество ошибок, которые вы получите, когда попросите пользователей сделать конверсию самостоятельно. Есть только один хороший способ сделать это, позволить пользователю вводить время в своем местном часовом поясе. Преобразуйте это немедленно в UTC и отправьте это на сервер. Все, что возвращается с сервера, должно быть преобразовано обратно в местное время в самый последний момент, непосредственно перед отображением.

1 голос
/ 15 марта 2010

Объект DateTime имеет возможность смещения от местного времени до времени UTC / GMT с использованием .GetUTCXXX (), это преобразует из экземпляра местного времени в смещение UTC на основе текущего параметра глобализации / локализации, используемого во время выполнения. .

Кроме того, в Globalization.CultureInfo есть объект Timezone, который также можно использовать для настройки времени UTC / GMT по местному времени.

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

0 голосов
/ 24 апреля 2010

Я не уверен, решит ли это вашу проблему или нет, но посмотрите библиотеку JavaScript Any + Time (TM) . Пропустите части о виджете Дата / Время и найдите информацию о AnyTime.Converter, который является объектом, который преобразует строки в объекты Date и обратно. Теперь он включает спецификаторы формата для смещений UTC / часовых поясов, а также параметры для переопределения местного времени (см. Раздел документации по смещения UTC , который включает параметры для utcFormatOffsetImpposed и utcParseOffsetAssumed). В следующем разделе также есть пример, который объясняет, как взять местное время и отобразить его в GMT. Если у вас есть какие-либо вопросы или проблемы с ним, отправьте их через страницу контактов для быстрого внимания. Надеюсь, это поможет!

...