mongoose和express.js中日期冲突
Conflicting dates in mongoose and express.js
当我用Date而不是String类型声明模式时,就会出现问题。
案例一:
var MySchema = new Schema({
created_at: {type: String, default: ''}
});
通过这个shema声明,我使用moment.js moment-timezone
模块来声明亚洲/加尔各答时区的当前时间。
var tmoment = require('moment-timezone');
var currentTime = tmoment().tz('Asia/Kolkata').format('llll');
而且我能得到正确的时间。
案例二:
var MySchema = new Schema({
created_at: {type: Date, default: ''}
});
通过这个shema声明,我使用moment.js moment-timezone
模块来声明亚洲/加尔各答时区的当前时间。
var tmoment = require('moment-timezone');
var currentTime = tmoment().tz('Asia/Kolkata').format('llll');
但是现在时间不是按照时区来的。我甚至尝试了以下声明
var tmoment = require('moment-timezone');
var currentTime = tmoment().tz('Asia/Kolkata').format();
但是找不到解决方案。
当您将日期保存到mongo数据库时,您可以简单地保存一个javascript Date
对象,而不考虑时区。(如情况2所示,使用Date
类型。)然后,您将使用moment来在所需的任何时区显示日期。
保存对象:
var id = ...
var saveReq = new RequestModel({ _id: id, created_at: new Date() });
saveReq.save(function (err, result) {
// ...
});
从数据库中读取对象,然后显示本地化日期字符串:
var tmoment = require('moment-timezone');
RequestModel.findOne({_id: id}, function (err, doc) {
if(err) {} // ...
var created = doc.created_at;
var display = tmoment(created).tz('Asia/Kolkata').format('llll');
console.log(display);
});
将服务器时区更改为本地时区。
相关文章:
- 比较从函数和生成的日期对象
- Json数据包含日期和时间格式
- Javascript日期格式类似于ISO,但本地
- 如何在输入字段中的按钮的帮助下打开日历,该字段的类型为“=”;日期”;
- 如何在JavaScript中延长当前日期
- 两位数的月份日期验证
- 更改angularjs中的日期-时间格式
- 将日期时间作为 JSON 发送将无法在我的视图中正确显示
- 将日期时间从json转换为可读格式
- NodeJS日期格式不起作用
- jquerydatetimepicker日期和时间应在框默认值中,而无需单击框
- 使用当前日期生成随机id
- Javascript-ID冲突的几率
- primefaces日历可以禁用过去的日期和时间吗
- 提前阅读日期
- Javascript两个日期选择器冲突
- mongoose和express.js中日期冲突
- jquery datepicker -当两个日期在相同的形式时发生冲突
- Joomla,不能在同一页上显示滑块和日期选择器!冲突
- 日期选择器和图像滑块冲突