MongoDB 集成Spring 的时间研究

本文探讨了Spring如何处理与MongoDB集成时的Date时间问题。在保存时,Spring将本地时区(如东八区)转换为GMT时间存储。查询时返回的也是GMT时间,但在转化为对象时会调整回本地时区。建议使用原始时间进行数据操作,无需转换为字符串。
摘要由CSDN通过智能技术生成

一直没太搞清楚spring 集成mongo Date 是怎么处理的,今晚研究了一下,算是搞清楚了。


1, java new Date 的时候,默认是 当前时区,如当前时区是东八区。

2, spring通过mongoRepository 保存到mongoDB的时候, 会把东八区变为GMT时间, 也就是减去8个小时进行保存。

      如果new Date 的时间是  2014-02-14 20:00:00, 保存到mongo的时间是: 2014-02-14 12:00:00, 通过mongoVue 和 mongo shell 查看都是这个时间。

3, spring 中通过Query 进行查询时, spring 通过Query 进行查询时, 返回的也是GMT时间: 2014-02-14 12:00:00

        然后通过 converter 转化为对象时, 时区转为东八区时间:  2014-02-14 20:00:00.

4, 查询条件的组织是: 

       用东八区时间进行作为查询条件传给 Query, driver 会转为  GMT 时间进行查询。

结论: 保存 数据的原始时间即可,不需要转换时间为字符串。


代码: 时间转为东八区时间:

		Date date = DateUtil.convertStringToDateTime("2014-02-10 20:38:44");
		Date date2 = DateUtil.convertStringToDateTime("2014
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值