2014-11-21 2 views
0

Почему следующая терпят неудачу, и как я могу это исправить:Сериализации и десериализации строки DateTime не работает в UTC

 DateTime now = DateTime.UtcNow; 
     string foo = now.ToString("O", CultureInfo.InvariantCulture); 
     DateTime bar = DateTime.ParseExact(foo, "O", CultureInfo.InvariantCulture); 
     Assert.AreEqual(now, bar); 
+0

вы можете объяснить то, что 'Assert.AreEqual();' метод делать? –

ответ

1

вам нужно возвращать время Utc

DateTime bar = DateTime.ParseExact(foo, "O", CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal); 

подробнее см DateTimeStyles

+0

DateTimeStyles.RoundtripKind делает эту работу независимо от того, был ли вход DateTime.UtcNow или DateTime.Now. – bfops

-1

Пожалуйста, проверьте, если вы можете дать Kind свойства при преобразовании. Я предполагаю, что вторая дата преобразуется в локальную, а первая - UTC.

+0

DateTimes - это типы значений, а не ссылочные типы. – bfops

+0

Да, простите, я полностью забыл об этом! –

Смежные вопросы