问题:不同国家,使用不同时区,而服务器代码却在国内,跨时区日期不同,根据日期查询,查询不到数据了

1.mongodb存储的new Date()是UTC时间,也就是0时区的时间,世界标准时间

2.参考moment官网,时区问题: http://momentjs.com/timezone/docs/

npm install moment-timezone

var moment = require('moment-timezone');
console.log(moment('2018-08-17T07:46:37.000+08:00').tz("Asia/Tokyo").format('YYYY/MM/DD HH:mm:ss'))//Asia/Tokyo,Asia/Hong_Kong,America/New_York,Asia/Shanghai
console.log('上海:'+moment().tz("Asia/Shanghai").format('YYYY/MM/DD HH:mm:ss'))
console.log('香港:'+moment().tz("Asia/Shanghai").format('YYYY/MM/DD HH:mm:ss'))
console.log('日本:'+moment().tz("Asia/Tokyo").format('YYYY/MM/DD HH:mm:ss'))
console.log('纽约:'+moment().tz("America/New_York").format('YYYY/MM/DD HH:mm:ss'))

更多支持的时区,请参考moment-timezone源码 moment-timezone/builds/moment-timezone-with-data-2012-2022.js

存入数据库:moment().tz("Asia/Tokyo").format('YYYY/MM/DD HH:mm:ss')  因为mongodb是弱数据类型的,可以直接存入字符串,即使你在schema中定义的是Date类型 moment().tz('Asia/Tokyo').add(-24,'hours').format('YYYY/MM/DD HH:mm:ss')

zoneconfig.create({
"zoneTime": "Asia/Tokyo",
"siteId": ['aaaa'],
"createTime": moment().tz('Asia/Tokyo').format('YYYY/MM/DD HH:mm:ss')
})

3.由于用的是阿里云的linux服务器,

monggo日期条件

const queryBetweenDate = {
$gte: new Date(new Date(mongoDate).getTime()),
$lt: new Date(new Date(mongoDate).getTime() + 86400000)
}

postMan输入的参数是mongoDate: 2018/08/24, 在本地是可以的,

本地打印:

{ '$gte': 2018-08-24T16:00:00.000Z,
'$lt': 2018-08-25T16:00:00.000Z }

但在服务上,打印的条件确是;

{ '$gte': 2018-08-23T16:00:00.000Z,
'$lt': 2018-08-24T16:00:00.000Z }

本地代码和服务器代码一摸一样,服务上却查不出来了,懵圈。。

不管是几点,打印都是T16:00:00.000Z

最后,加了8小时,发到服务上的日期条件为

const queryBetweenDate = {
$gte: new Date(new Date(mongoDate).getTime()+1000*60*60*8),
$lt: new Date(new Date(mongoDate).getTime() + 86400000+1000*60*60*8)
}

至此,问题已解决。

nodejs,mongodb不同时区问题的更多相关文章

  1. react+react-router+react-redux+nodejs+mongodb项目

    一个实际项目(OA系统)中的部分功能.这个demo中引入了数据库,数据库使用了mongodb.安装mongodb才能运行完整的功能.要看完整的项目可以移步我的github 技术栈 React v15. ...

  2. NodeJS,MongoDB,Vue,VSCode 集成学习

    NodeJS,MongoDB,Vue,VSCode 集成学习 开源项目地址:http://www.mangdot.com

  3. Nodejs+MongoDB+Bootstrap+esj搭建的个人简易博客

    github:https://github.com/yehuimmd/myNodeBloy Nodejs+MongoDB+jQuery+Bootstrap-esj搭建的个人简易博客 主要功能 前台 : ...

  4. NodeJs + mongodb模块demo

    代码比较通俗易懂,但是我还是在这个过程中浪费了不少时间,也算是看到了nodejs中异步的一个小坑.未来的坑还有很多,慢慢找坑填坑吧. 参考资料如下: 1.断言模块 : https://nodejs.o ...

  5. 阿里云上部署 centos+nodejs+mongodb

    先执行 yum -y update nginx 安装 yum -y install nginx 设置开机启动 chkconfig nginx on nodejs 安装: yum install nod ...

  6. NodeJS+Mongodb+Express做CMS博客系统

    楼主正在用业余时间开发中-- ,目前的版本仅支持会员系统,尝鲜一下吧~ hi-blog 一个 nodejs+express+mongodb 的 cms 系统 怎么启动 默认你已经安装了 mongodb ...

  7. 前端MVC学习总结(四)——NodeJS+MongoDB+AngularJS+Bootstrap书店示例

    这章的目的是为了把前面所学习的内容整合一下,这个示例完成一个简单图书管理模块,因为中间需要使用到Bootstrap这里先介绍Bootstrap. 示例名称:天狗书店 功能:完成前后端分离的图书管理功能 ...

  8. angularjs+nodejs+mongodb三件套

    说实话,自己对于web前段的认识并不是太深入,但是因为项目的需要,所以有的时候肯定会需要接触到web前段的知识点.说到web前端想必大家肯定会想到css+js+html,的确web前端的工作,从某总角 ...

  9. 使用Nodejs+mongodb开发地图瓦片服务器

    原先地图瓦片服务器采用的是arcgisserver发布的地图服务并进行切片,但ags发布的地图服务很占内存,发布太多的话服务器压力很大.再一个就是ags价太高了. 学习Nodejs之后,发现这是一个可 ...

随机推荐

  1. Python 开发的 IDE 和代码编辑器,你选择的哪一个?

    为了方便,我会分两个大类去说明,一类是适用于软件开发的比较通用的编辑器或 IDE ,我们可以通过插件等形式支持 Python 的开发,另一个是专注于 Python 开发的编辑器或 IDE . 不过在此 ...

  2. ActiveSync中的SendMail

           SendMail命令是专门用于发送MIME格式邮件的.在这里,子元素ClientId必须不同,否则会被认为是同一封邮件,被服务器拒绝.         疑问:ClientId应该是和账户 ...

  3. Exchange Server Notes

    以下信息来自Option响应: HTTP/1.1 200 OK Cache-Control: private Allow: OPTIONS,POST Server: Microsoft-IIS/7.0 ...

  4. Spring Boot 导出Excel表格

    Spring Boot 导出Excel表格 添加支持 <!--添加导入/出表格依赖--> <dependency> <groupId>org.apache.poi& ...

  5. EF Fluent API

    EntityTypeConfiguration 它可以为一个实体类,配置一个模型. Entity Framework 6 一次加载许多个 Fluent API 映射 如果对于许多实体有大量映射,则 O ...

  6. 前后台交互经常使用的技术汇总(后台:Java技术,前台:Js或者Jquery)

    1:由于针对特定的前后台交互用到的知识总结,所以不大量贴代码,主要给出思路,方便自己以后脑补和技术总结,当然也希望可以帮助到别人. 后台Json和其他格式转化,之前总结过Json和对象,集合,字符串的 ...

  7. 使用SecureCRT脚本备份网络设备配置的一点感悟

    https://blog.csdn.net/qq_25294171/article/details/85158458

  8. Ansible playbook 部署Openresty

    - hosts: all tasks: - name: copy package copy: src=/usr/local/openresty-1.13.6.1.tar.gz dest=/usr/lo ...

  9. react-native-video

    <Video ref='videoPlayer' source={{uri:'http://www.thinktown.com/video/th.mp4'}} //网络视频 //source={ ...

  10. sendfile

    Sendfile 函数在两个文件描写叙述符之间直接传递数据(全然在内核中操作,传送),从而避免了内核缓冲区数据和用户缓冲区数据之间的拷贝,操作效率非常高,被称之为零拷贝. Sendfile 函数的定义 ...