Как работать с DateTime и TimeZone в Silverlight? - PullRequest
1 голос
/ 03 февраля 2011

Я работаю над приложением Silverlight с SQL Azure. Как я знаю, если DateTime Kind не указан, Silverlight изменит его на Local и сохранит в Azure как время UTC.

Все работает, как и ожидалось, но когда я получаю DateTime данные из SQL Azure, его тип равен Unspecified, и Silverlight не преобразует обратно в Local время при отображении в пользовательском интерфейсе.

Например: я использую свое приложение в Риме (UTC + 1), я устанавливаю дату на 15:00, затем сохраняю в базу данных. В базе данных он будет сохранен как 14:00 (UTC).

Теперь я открываю страницу для редактирования этих данных, она запрашивает из базы данных как 14:00 с типом Unspecified, а также показывает 14:00 на странице, что, очевидно, неверно.

Я попытался установить DateTime вид в DomainService (перед возвратом этих данных клиенту), проверив, не указан ли его тип, и установите его в UTC. На этот раз, когда я изменяю DateTime на своей странице, его тип всегда UTC.

Похоже, что Silverlight преобразует дату только в том случае, если его вид равен Unspecified, в противном случае он ничего не делает, он также не может преобразовать DateTime из базы данных для правильного отображения, даже если DateTime имеет Kind.

Я хочу знать, есть ли решения или обходные пути для этой проблемы?

1 Ответ

2 голосов
/ 03 февраля 2011

Если вы знаете, что он хранится в UTC, пробовали ли вы установить дату и время, а затем использовать Silverlight для явного преобразования в местное время? Я не знаком с Silverlight, но в других формах .NET вы должны выполнять это преобразование явно для операций пользовательского интерфейса.

DateTime dt = GetDateFromDB();

dt = dt.SpecifyKind(DateTimeKind.UTC);

DateTime dtAsLocal = dt.ToLocalTime();
...