首页 > 解决方案 > .NET Core 和 Xamarin 之间的不同 JSON DateTime 反序列化

问题描述

在 SQLServer 数据库表上,我有两个出生日期:

1975-10-11 00:00:00.000

1983-07-19 00:00:00.000

一个服务(不是我的)将生日公开为 JSON,日期时间采用以下格式(我无法更改):

"/日期(182210400000-0000)/"

"/日期(427413600000-0000)/"

测试的基本代码:

response = await client.PostAsync(uri, contentReq);
if (response.IsSuccessStatusCode)
                {
                    var contentResp = await response.Content.ReadAsStringAsync();
                    Console.WriteLine("JSON:" + contentResp);

                    var user = JsonConvert.DeserializeObject<User>(contentResp);


                    TimeSpan ts1 = new DateTimeOffset(user.BirthDate.Value).Offset;
                    Console.WriteLine($"Offset:{ts1.ToString()}");
                    Console.WriteLine($"Data:{user.BirthDate.Value.ToString()}");
}

.NET5 控制台应用程序上的输出:

偏移量:02:00:00

日期:11/10/1975 00:00:00

偏移量:02:00:00

日期:19/07/1983 00:00:00

Xamarin Android 应用程序上的输出:

偏移量:01:00:00

日期:10/10/1975 23:00:00

偏移量:02:00:00

日期:19/07/1983 00:00:00

请帮助我了解反序列化中的 Xamarin 错误。为什么只使用其中一个值?我尝试了其他日期和时间,结果无法预测。

更新1:

有无测试

 JsonSerializerSettings microsoftDateFormatSettings = new JsonSerializerSettings
            {
                DateFormatHandling = DateFormatHandling.MicrosoftDateFormat
            };

并添加

var user = JsonConvert.DeserializeObject<User>(contentResp,microsoftDateFormatSettings);

标签: xamarinjson.net

解决方案


推荐阅读