使PetaPoco导致前端显示日期大8小时

在新项目中遇到了前端显示日期与数据库数据对不上时一头雾水,

 前端时间: 数据库时间:

上面对比可以看出,前端数据比数据库时间大八个小时。

首先判断可能是转json格式出错,所以特地写个时间变量time测试经json转换后是否出错。

 控制器方法: 

 前台数据: 

 

 

json转换后日期是时间戳,时间戳转换后可以看出date与控制器获取到的数据一致,而CreateDate则比控制器获取到的数据大八个小时,由此判断json转换是没有问题。

后来展开time与CreateDate的Date详情发现两者DateTime.Kind分别为Local、UTC(Kind官方解释:该值指示由此实例表示的时间是基于本地时间、协调世界时 (UTC),还是两者皆否)。

到此,前端时间为什么比数据库时间大八个小时显然是由于DateTime.Kind设置为UTC后json转换时是根据本地时区UTC+08:00得出。

  

 

为什么实体中DateTime类型的DateTime.Kind会是UTC,经过一番查找,发现是Petapoco框架中有个标准时间映射器

  

修改DateTimeKind.UTC为DateTimeKind.Local,最终解决时间差问题。

  

转载于:https://www.cnblogs.com/binzi/p/9003185.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值