簡體   English   中英

mongoose和express.js中的日期沖突

[英]Conflicting dates in mongoose and express.js

當我聲明我的模式類型為Date而不是String時,會出現問題。

案例I:

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對象。 (使用Date類型,如果情況2)。然后,您將使用片刻在您需要的任何時區顯示日期。

要保存對象:

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);
});

將服務器時區更改為您當地的時區。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM