• nodejs,mongodb不同时区问题


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

    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)
    }

    至此,问题已解决。   

  • 相关阅读:
    python与数据库(SQLServer、MySQL、Redis、MongoDB)
    网络表示学习 图神经网络资料整理
    Java学习笔记 算法 Algorithms Fourth Edition
    word2vec 代码解读
    爬虫python的世界
    mac 字幕生成工具
    CS224W Analysis of Networks
    SNAP macos
    python基础代码
    Keras笔记
  • 原文地址:https://www.cnblogs.com/qiyc/p/9499467.html
Copyright © 2020-2023  润新知