ho un appuntamento serializzato come stringa "2012-06-20T13: 19: 59.1091122Z"DateTimeConverter la conversione da stringa UTC
Utilizzando la DateTimeConverter, questo viene convertito in un oggetto DateTime {22: 49: 59,1,091122 millions} con la proprietà Kind impostata su "Locale".
es. Il seguente test ha esito negativo:
private static readonly DateTime UtcDate = new DateTime(634757951991091122, DateTimeKind.Utc);
private const string UtcSerialisedDate = "2012-06-20T13:19:59.1091122Z";
[Test]
public void DateTimeConverter_Convert_From_Utc_String()
{
// Arrange
var converter = TypeDescriptor.GetConverter(typeof(DateTime));
// Act
var result = converter.ConvertFrom(UtcSerialisedDate);
// Assert
Assert.AreEqual(UtcDate, result);
Assert.AreEqual(DateTimeKind.Utc, ((DateTime)result).Kind);
}
Sono un po 'sorpreso da questo ... mi sarei aspettato che l'oggetto DateTime restituito dal convertitore sarebbe in UTC.
I documenti dicono che DateTimeConverter utilizza DateTime.Parse, ma suppongo che non debba utilizzare l'opzione DateTimeStyles.RoundtripKind.
C'è qualche modo per aggirare questo?