Так что я тестировал это весь день с простой настройкой. Я десериализирую строку JSON в объект класса. Единственное свойство для значения DateTimeOffset
. Просто для проверки я не предоставляю часовой пояс со свойством даты JSON, так как я не смогу контролировать то, что мне отправит третья сторона. После десериализации свойство приняло часовой пояс моей системы. Я понимаю, что это, вероятно, намеренно, но возможно ли сделать так, чтобы оно предполагало UTC, поскольку я считаю, что это было бы лучшим вариантом для моего приложения?
То, что я хочу, чтобы это было: 01/01/1900 00:00:00 +00:00
Я пытался использовать JsonConverters
, но кажется, что он анализируется как DateTimeOffset
, прежде чем он перейдет к методу ReadJson
, и он не дает мне доступ к строковой версии значения свойства JSON, поэтому я могуразбери это правильно.
Код и пример ниже:
Public Class MyTest
Public Property DTO As DateTimeOffset = #1900-01-01#
End Class
Public Sub TestMethod()
Dim myDate As String = "{""DTO"": ""1900-01-01T00:00:00""}"
Dim o = JsonConvert.DeserializeObject(Of MyTest)(myDate,
New JsonSerializerSettings With {
.DateParseHandling = DateParseHandling.DateTimeOffset,
.DateTimeZoneHandling = DateTimeZoneHandling.Utc
})
End Sub
Как вы можете видеть, он принял +2 часовой пояс: