xamarin - .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);
解决方案
推荐阅读
- ionic-framework - Ionic 3 图像映射问题
- python - Django 管理员。当对象具有布尔字段== True时,如何为列表视图中的每一行添加背景颜色?
- c - 具有 DSNAME 长度的 IBM Window Services (DWS) CSRIDAC 无效
- vb.net - 在文本框中显示光标指向的行并在 VB.NET 中隐藏其他行
- mysql - 如何根据其名称将一行除以三个计数之一?
- string - 在golang中使用==符号并使用循环比较字符串a是否等于字符串b,哪个性能更好?
- angularjs - 文件上传与其他表单数据获取文件未定义的angularjs
- sql - 如何克服以下查询中除以零的错误
- sql - sql中IN运算符的工作原理
- java - Java - OOP - 在编译时强制执行特定的实现