遇到的问题

参考:mongo中时间跟实际时间相差8小时

Mongo中一个Collection有一个字段用来存放数据的插入时间,但记录的时间比实际时间晚了8小时。

查询得知存储在mongodb中的时间是标准时间UTC +0:00,而中国时区是+8.00,

请问有什么办法保证Collection中的插入时间和实际时间一致吗?

GMT: 格林威治时间

UTC:标准时间

ISO: 标准时间

CST:北京时间

时间加Z:代表标准时间(一般和UTC时间一致)

enterDate: {
type: Date,
default: new Date()
}

解决方法参考:

  • 應該要在應用層處理這個問題比較好,資料庫裡面都統一存 UTC 這樣才不會造成跨時區用戶插入資料的時間差異,多加一個 Timezone 欄位來克服。
  • 存 timestamp 也不錯.. 不過也是要依據時區轉

确定解决思路:

在应用层修改好数据,避免在数据库中直接使用Date类型。

实际解决方案1:设置集合规则为字符串格式

enterDate: {
type: String,
default: new Date().toString()
}

实际解决方案2:设置集合规则为数字格式----存储为时间戳(推荐使用方案2,这样不同国家的人访问时不会出现时区问题)

enterDate: {
type: Number,
default: Date.now
}

注意:通过页面中添加学生信息时,如果没有填写enterDate,它的值是 '' 一个空字符串。

要在存储数据前,手动修改它的值。

if (studentData.enterDate === '') {
// studentData.enterDate = Date.now();
studentData.enterDate = new Date().toString();
}

以上两种方案任选其一

再在art-template解析中,使用monment第三方模块解析时间:

  1. 安装第三方模块:npm install moment

  2. 引入monment第三方模块

    const moment = require('moment');
    // 导入模板变量moment
    template.defaults.imports.moment = moment;
  3. 在模板中使用moment

    <td>{{ moment($value.enterDate).format('YYYY-MM-DD hh:mm:ss') }}</td>

mongodb中时间跟实际时间相差8小时----时区问题的更多相关文章

  1. springboot后端时间到前端,相差8小时,时间格式不对

    spring boot后台时间正确,返回给前台的时间不正确,和后台差8个小时 { "code": 1, "msg": "SUCCESS", ...

  2. PHP 中 Date 函数与实际时间相差8小时的解决方法

    PHP 中的 date() 函数显示的时间是格林威治时间,和北京时间正好相差8个小时,其他时间相关的函数,如 strtotime() 也有相同的问题,同样可以通过下面的方法来解决: 1. 修改php. ...

  3. Python: 处理mongodb文档,怎么让UTC时间转换为本地时间?

    存储数据到MongoDB数据库时,一般我们会加一个更新数据的时间update_time.这时在python代码中 会用到datetime模块以便获取当前系统时间,但是存入到MongoDB数据库时,存储 ...

  4. 【转】PHP中获取当前系统时间、时间戳

    今天写下otime($time, $now)为将时间格式转为时间戳,$time为必填.清楚了这个,想了解更多,请继续往下看. 3. date($format)用法比如:echo date('Y-m-d ...

  5. Log4j 输出的日志中时间比系统时间少了8小时的解决方法,log4j日志文件重复输出

    1. 第一个问题:时间少了8小时 Log4j 输出的日志中,时间比系统时间少了8小时,但是 eclipse 控制台输出的日志的时间却是对的. log4j配置如下: #all logger output ...

  6. java中获取日期和时间的方法总结

    1.获取当前时间,和某个时间进行比较.此时主要拿long型的时间值. 方法如下:  要使用 java.util.Date .获取当前时间的代码如下 Date date = new Date(); da ...

  7. 【转】C/C++中的日期和时间 TIME_T与STRUCT TM转换——2013-08-25 16

    http://www.cnblogs.com/Wiseman/archive/2005/10/24/260576.html 摘要: 本文从介绍基础概念入手,探讨了在C/C++中对日期和时间操作所用到的 ...

  8. JavaScript 中的日期和时间

    前言 本篇的介绍涵盖以下部分: 1. 时间标准指的是什么?UCT和GMT 的概念.关联和区别? 2. 时间表示标准有哪些? 3. JS 中时间的处理 日期时间标准 日期的标准就不多说了 -- 公元纪年 ...

  9. php中获取当前系统时间、时间戳

    今天写下otime($time, $now)为将时间格式转为时间戳,$time为必填.清楚了这个,想了解更多,请继续往下看. 3. date($format)用法比如:echo date(‘Y-m-d ...

随机推荐

  1. Spring 的循环依赖问题

    什么是循环依赖 什么是循环依赖呢?可以把它拆分成循环和依赖两个部分来看,循环是指计算机领域中的循环,执行流程形成闭合回路:依赖就是完成这个动作的前提准备条件,和我们平常说的依赖大体上含义一致.放到 S ...

  2. Python使用笔记20--网络操作小练习

    1 ''' 2 2.自己抓取qq群的接口,传入一个群号,然后把群成员的头像下载到本地,头像用群备注来命名,如果没有 3 群备注,那么取昵称. 4 ''' 5 import requests 6 imp ...

  3. Linux上生产环境源码方式安装配置postgresql12

    1.Linux上源码方式安装postgresql12 01.准备操作系统环境 echo "192.168.1.61 tsepg61" >> /etc/hosts mou ...

  4. 使用deepin连接罗技k380

    1,刚开始总是连不上,连上了就断开了,以为是deepin系统的问题. 2,首先在华为论坛上找到这样的一片解决方案:https://cn.ui.vmall.com/thread-21831568-1-1 ...

  5. 网络损伤仪WANsim--不同的部署方式

    网络损伤仪WANsim的业务口在逻辑上是不存在IP地址与MAC地址的,所以,WANsim可以串接在测试拓扑中的任意位置,只需要确保有流量通过WANsim即可. 不同的拓扑结构会对测试的结果造成影响.在 ...

  6. CentOS7.9安装Oracle 12C数据库实战

    准备工作(先安装好以下软件): 1.服务器操作系统 CentOS7.9 2.Shell工具:Xshell 7免费版 3.Xmanager 7软件 =========================== ...

  7. redis故障时的一些概念

    1.缓存穿透 概念访问一个不存在的key,缓存不起作用,请求会穿透到DB,流量大时DB会挂掉. 解决方案采用布隆过滤器,使用一个足够大的bitmap,用于存储可能访问的key,不存在的key直接被过滤 ...

  8. Python - 基础数据类型 set 集合

    集合的简介 集合是一个无序.不重复的序列 它的基本用法包括成员检测和消除重复元素 集合对象也支持像 联合,交集,差集,对称差分等数学运算 集合中所有的元素放在 {} 中间,并用逗号分开 集合的栗子 这 ...

  9. (opencv5)轮廓检测函数

    (opencv5)轮廓检测函数 contours, hierarchy = cv2.findContours(img, mode, method,[offset) 注意 : 1.输入为二值图像,黑色为 ...

  10. swagger json导出word,Typora软件推荐!!!

    场景: 前几天项目验收,赶了一整天补API接口设计文档,给爷整吐了.周末的时候就想能不能直接把swagger的json文件导出成word? 顺便学习一下NPOI的使用. 实现思路: 1.先把swaag ...