我使用了一個名爲Json.NET庫,它使用下面的代碼內部的JSON字符串解析成一個DateTime:DateTime.TryParse無法解析DateTime.MinValue
if (DateTime.TryParse(s, Culture, DateTimeStyles.RoundtripKind, out dt))
{
dt = DateTimeUtils.EnsureDateTime(dt, DateTimeZoneHandling);
SetToken(JsonToken.Date, dt);
return dt;
}
我認爲Json.NET被擰轉換,但它看起來像是DateTime.TryParse本身,這是貶值的價值。
當我解析以下有效的ISO日期(其對應於UTC DateTime.MinValue):
string json = "0001-01-01T00:00:00+00:00";
DateTime dt;
DateTime.TryParse(json, invariantCulture, DateTimeStyles.RoundtripKind, out dt);
結果是一個局部的DateTime:{0001-01-01 8:00:00 PM}
,其中,當轉換回UTC時間給出{0001-01-02 0:00:00 PM}
。本質上,日期下溢,這正是您期望DateTimeStyles.RoundtripKind要避免的問題。
如何避免這種情況?
我包含的代碼來自一個名爲'Json.NET'的流行庫。如果他們使用'DateTimeStyles.RoundtripKind'確實不正確,那麼我會說這是他們的錯誤。 – Alain