mongodb日期问题
问题:我们导入json数据在mongodb的集合里(表),数据类型(字符串和整型),因此我们的日期是字符串类型,我们需要给他转换成日期类型
字符串日期"2021-09-27"
1.手动转换
2021-09-26 T16:00:00.000+00:00
Tue Sep 27 2021 00:00:00 GMT+0800 (中国标准时间)
默认转换成当日零点
数据量大,不介意手动
2.批量转换
db.Schedule.find().forEach(function(data) {
db.getCollection('Schedule').updateOne({_id: data._id},{$set: {workDate: new Date(data.workDate)}})
2021-09-27T00:00:00.000+00:00
Tue sep 27 2021 08:00:00 GMT+0800 (中国标准时间)
默认为当日8点
因此我们查询数据时,传入的时间也应该是八点
//将字符串日期转为日期:Tue Sep 27 00:00:00 CST 2021
Date date = new DateTime(workDate).toDate();
//将日期增加8个小时:Tue Sep 27 08:00:00 CST 2021
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.HOUR_OF_DAY, +8);
//根据参数查询mongodb
List<Schedule> scheduleList =
scheduleRepository.findScheduleByHoscodeAndDepcodeAndWorkDate(hoscode,depcode,cal.getTime());
System.out.println(cal.getTime());
mongdb时间类型
- Date() 显示当前的时间
- new Date 构建一个格林尼治时间 可以看到正好和Date()相差8小时,我们是+8时区,也就是时差相差8,所以+8小时就是系统当前时间
- ISODate() 也是格林尼治时间
> Date()
Sun Jan 24 2016 20:39:57 GMT+0800 (CST)
> new Date()
ISODate("2016-01-24T12:40:24.035Z")
> ISODate()
ISODate("2016-01-24T12:52:33.341Z")