Диалог Monotouch DateElement возвращает неправильную дату

У меня очень странная проблема с Monotouch.Dialog DateElement. Чтобы объяснить, что я делаю: у меня есть несколько записей веса для дат, хранящихся в БД. все записи отображаются в TableView. если я нажму «добавить», я перейду к DialogViewController с DateElement и контрэлементом - все работает нормально.

Если я выбираю строку в tableView, я перехожу к тому же DialogViewController и могу редактировать запись. Если я редактирую вес (контрэлемент), все в порядке, но если я редактирую дату (DateElement), я получаю неправильную дату.

при редактировании записи веса я создаю экземпляр DateElement следующим образом: dateElement = new DateElement ("Dato", weightObject.Date);

когда нажимается кнопка сохранения, я беру новое значение из «dateElement.DateValue.Date», и здесь что-то идет не так. Я ВСЕГДА получаю дату, которая на 1 день меньше, чем я выбрал.

Я знаю, это звучит странно.... но я пытался проследить свой путь через это и не могу найти никакой ошибки в моем коде. Кто-нибудь еще видел что-то подобное?

(если я щелкну дату и вернусь снова, не меняя ее, тогда проблем нет - проблема возникает только тогда, когда я редактирую дату)

/Николай


person NicolajB    schedule 10.03.2012    source источник


Ответы (2)


Кажется, я нашел "ошибку".

Меня интересует только дата, а не часы, поэтому, когда я сохраняю дату, я беру такое значение из элемента даты: "dateElement.DateValue.Date"

Позже, когда я хочу отредактировать дату, я назначаю, например, «2012-03-18 00:00:00» элементу даты. Когда я возвращаю это значение, оно каким-то образом преобразуется из CET в UTC, что означает, что я получаю предыдущую дату :-(

Так что я думаю, мне нужно преобразовать обратно в местное время

person NicolajB    schedule 11.03.2012
comment
Привет, @NicolajB, у меня та же проблема, ты знаешь, как снова преобразовать в местное время, потому что я выбираю, например, 24 января 2013 года, а когда я отлаживаю DateValue.Date, это 25 января 2013 года. Большое спасибо - person VAAA; 05.02.2013

Преобразование обратно в местное время будет выполнено с помощью: dateElement.DateValue.ToLocalTime()

person danmiser    schedule 23.07.2013