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

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. Plain Old Data (POD) (转)

    定义 POD类型包括下述C++类型,以及其cv-qualified的类型,还有以其为基类型的数组类型: 标量类型(scalar type) POD类类型(POD class type) 标量类型 术语 ...

  2. Python内置模块之序列化模块

    序列化模块 json dumps loads dump load pickle dumps loads dump load shelve json 1: dumps/loads import json ...

  3. CAS—认证原理

    CAS,Central Authentication Service—中央认证服务,是Yale 大学发起的一个企业级的.开源的项目,旨在为Web应用系统提供一种可靠的SSO解决方案.下面简单介绍SSO ...

  4. scrollReveal.js – 页面滚动显示动画JS

    简介 和 WOW.js 一样,scrollReveal.js 也是一款页面滚动显示动画的  JavaScript ,能让页面更加有趣,更吸引用户眼球.不同的是  WOW.js  的动画只播放一次,而 ...

  5. 学习笔记: 特性Attribute详解,应用封装

    /// /// 特性:中括号声明 /// /// 错觉:每一个特性都可以带来对应的功能 /// /// 实际上特性添加后,编译会在元素内部产生IL,但是我们是没办法直接使用的, /// 而且在meta ...

  6. javascript 语句和严格模式(三)

    一.语句 javascript程序由语句组成,语句遵守特定的语法规则. block break continue empty if...else switch try catch var functi ...

  7. nginx 域名泛解析

    部分应用场景下要求服务器根据客户输入的二级域名地址自动访问不同的页面,比如一个服务器放置了不同的业务,商城.官网等多个业务,又不想一个个配置server, 网站目录结构入戏: html 网站根目录 m ...

  8. nginx做代理安装docker

    1.环境 服务器IP 服务用途 是否能 联网 192.168.126.128 docker服务器(简称B服务器) 不能 192.168.126.130 nginx服务器(简称A服务器) 能 2.背景 ...

  9. day100-序列化组件

    3 序列化组件 class BookSerializer(serializers.Serializer): title = serializers.CharField( max_length=32) ...

  10. 059 SparkStream介绍

    离线计算框架:MR,hive-->对时间要求不严格 实时计算框架:SparkCore-->要求job执行时间比较快 交互式计算框架:SparkSQL,Hive,-->提供SQL操作的 ...