尚硅谷尚医通项目Mongodb日期问题

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")
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值