因为取资料的方式都以时间线的方式取得(http, websocket)
所以时区是一个必须要解决的问题
在 Mongodb 中 Date 储存的是 Int
没有办法在 Storage 层中解决时区问题
所以在储存的时候都统一使用 UTC
所以在处理时区问题可以在 getter/setter
中解决
以getter 做范例
const DEFAULT_TIME_ZONE = 'Asia/Taipei';
const DEFAULT_FORMAT_DATE_TIME = 'yyyy-MM-dd HH:mm:ss.SSS';
const schemaOptions = {
toObject: {
getters: true,
virtuals: true,
versionKey: false,
transform: function(doc, ret) {
ret.id = ret._id;
delete ret._id;
}
},
toJSON: {
getters: true,
virtuals: true,
versionKey: false,
transform: function(doc, ret) {
ret.id = ret._id;
delete ret._id;
}
},
runSettersOnQuery: true,
};
const formatDateTime = (date) =>
format(utcToZonedTime(date, DEFAULT_TIME_ZONE), DEFAULT_FORMAT_DATE_TIME);
const messageSchema = new Schema({
createAt: {
type: Date,
default: now,
get: formatDateTime,
},
}, schemaOptions);
这样取值的时候会自动将 UTC
转为 Asiz/Taipei
的时区时间
再顺便处理 format
而在 schemaOptions
中部只处理 getter/setter
同时将 _id
=> id
做处理
<<: 【零基础成为 AI 解梦大师秘笈】Day28 - 周易解梦之人工智慧(9)
实例变数 实例变数(instance variable)拥有储存资料成员的记忆体空间,不与其他物件共...
字串 函数应用方法 len() – 字串长度 min() – 最小值 max() – 最大值 使用...
0x1 前言 昨天确认接到讯息回覆了,今天来把解密函数跟 receive_msg 整理一下 0x2 ...
事件 指的是在 DOM 上所发生的事件,换句话是可以是特定的动作被触发後,必须要执行对应的事情。 (...
1. 远端数据库 - git remote 如何推送分支到远端数据库 (1) 建立新专案并连接本地数...