背景:
拦截件监控时,对于签收的数据需要比较签收时间和实际同步数据的时间来判断 同步时间是在签收前还是签收后。在比较时,用到同步时间syncTime和signTime, signTime从Q9查单获取,为 local time,syncTime 在 mongodb 中查出,为 UtcTime。
问题:
在 utc time 和 local time 比较时,不会带着时区比较,如图
导致监控数据比较时,判断差了8h。大部分数据都是下发时间在签收后的,但是被判断成在签收前, 发现该问题是通过跟着几条同步时间在签收前的单号进行逐条查单才发现。
解决:
在比较时,一定要都转成 utc time 再进行比较。
总结:
- 在这种时间比较时,一定要注意时区统一
2. mongodb在存储时,会将local time默认转成 utc time 存储
3. mongodb在存储时,会将utc time 直接存储
4. mongodb在取数据时,直接取出utc time