我有一個ASP.Net核心服務,它使用Newtonsoft.Json庫來處理JSON數據。 示例JSON輸入包含一個字符串,其中包含ISO8601格式的日期值。 但是,我正在觀察不同的日期時間值是否會返回相應的日期。 下面是示例代碼 -如何獲得與Newtonsoft.JSON一致的日期時間值JObject
var jsonString = @"{
""data"": {
""name"": ""John Doe"",
""dateOfBirth"": ""1990-05-25T15:54:49.119+00:00""
}
}";
var jsonObj = JObject.Parse(jsonString);
var person = jsonObj.ToObject<Person>();
DateTime dateOfBirth = DateTime.Parse(person.Data.DateOfBirth);
if (dateOfBirth.Kind != DateTimeKind.Utc)
{
dateOfBirth = dateOfBirth.ToUniversalTime();
}
Console.WriteLine("Date of birth is " + dateOfBirth.ToString("o"));
Person類是這樣的 -
class Person
{
public PersonalData Data;
}
class PersonalData
{
public string Name { get; set; }
public string DateOfBirth { get; set; }
}
如果我提供""dateOfBirth"": ""1990-05-25T15:54:49.119+00:00
「」 時,輸出爲 -
Date of birth is 1990-05-25T15:54:49.0000000Z
如果我提供""dateOfBirth"": ""1990-05-25T15:54:49.119Z""
,輸出是 -
Date of birth is 1990-05-25T10:24:49.0000000Z
可以看出,輸出是不同的,因爲它應該是相同的。呼叫者可以設置ISO8601格式的任何日期時間字符串。
有什麼辦法可以一致地處理這個問題嗎?
我不認爲這個問題是與日期時間。問題發生在Json.Net上,當字符串具有「Z」後綴或「00:00」時,日期時間轉換不同。 – tyrion
字符串爲「」時給出正確結果1990-05-25T15:54:49.119 + 00: 00「」 – tyrion