遇到的问题
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:
}
注意:通过页面中添加学生信息时,如果没有填写enterDate,它的值是 '' 一个空字符串。
要在存储数据前,手动修改它的值。
if ( === '') {
// = ();
= new Date().toString();
}
以上两种方案任选其一
再在art-template解析中,使用monment第三方模块解析时间:
安装第三方模块:npm install moment
引入monment第三方模块
const moment = require('moment');
// 导入模板变量moment
= moment;
在模板中使用moment
{{ moment($).format('YYYY-MM-DD hh:mm:ss') }}