遇到的问题

参考: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. 将make的输出(标准输出/标准错误输出)重定向到文件

    方式 描述符 含义 stdin 0 标准输入 stdout 1 标准输出 stderr 2 标准错误输出 1.想要把make输出的全部信息,输出到某个文件中 最常见的办法就是:make xxx > ...

  2. C语言:输出各位整数的数字

    #include <stdio.h> main() { int i,a,b,c,d,e; printf("请输入四位整数:\n"); scanf("%d&qu ...

  3. 建立属于自己的scrapy crawl模板

    本人安装PYTHON3.7安装位置:D:\Python\Python37模板位置:D:\Python\Python37\Lib\site-packages\scrapy\templates\spide ...

  4. 安卓源码默认开启USB调试

    找到\frameworks\base\services\usb\java\com\android\server\usb\UsbDeviceManager.java下的 Settings.Global. ...

  5. MySQL主从复制的简单搭建

    @ 目录 1.MySQL一主一从的简单搭建 1.1.主从复制简介 1.2.MySQL主从复制简介 1.3.主从复制的架构 1.4.前期准备 1.5.主要配置实现 1.5.1.测试环境 1.5.2.配置 ...

  6. Windows配置深度学习环境详细教程(一):安装Pycharm和Miniconda、conda环境介绍

    序言 对于想要入门Python或者深度学习的初学者而言,配置环境一直是一个令人头疼的问题.相信有许多人经历过安装第三方包失败,安装好了却在使用中报错,安装CUDA.tensorflow.pytorch ...

  7. mysql常用sql语法

    一.创建主键的三种方式 1. CREATE TABLE user( uid INT PRIMARY KEY, uname VARCHAR(10), address VARCHAR(20) ) 2. C ...

  8. 关于vue3简单状态管理约定引发的思考

    官方文档的代码是这样的 export const store = { debug: true, state: reactive({ message: 'Hello!' }), setMessageAc ...

  9. YsoSerial 工具常用Payload分析之Common-Collections7(四)

    前言 YsoSerial Common-Collection3.2.1 反序列化利用链终于来到最后一个,回顾一下: 以InvokerTranformer为基础通过动态代理触发AnnotationInv ...

  10. shell的图形排列

    目录 一.矩形 二.直角三角形 三.倒直角三角形 四.靠右的直角三角形 五.等腰三角形 六.平行四边形 七.等腰梯形 八.菱形 九.可变动菱形 一.矩形 二.直角三角形 三.倒直角三角形 四.靠右的直 ...