2017-04-25 82 views
0

貓鼬以UTC格式將日期時間保存爲ISODate("2017-04-25T09:40:48.193Z")。我如何將其時區更改爲本地服務器時區。所以我不需要改變每次我從數據庫檢索它的時間。這裏是我的模型架構:如何在特定時區保存貓鼬日期時間

var MyModelSchema = new mongoose.Schema(
    { 
     id: Number, 
     description: String, 
     created: {type: Date}, 
     modified: {type: Date, default: Date.now}, 
    }, 
    { 
     collection: 'my' 
    } 
); 

PS:據我所知,最好是節省時間UTC格式,但在這裏我的要求是將其保存在指定的時區。

+2

我會*強烈*建議,即使這是可行的。你真的不想在服務器本地時區中存儲時間戳。爲什麼你的服務器時區如此特別?當他們想檢查日誌或其他信息時,將信息轉換爲* viewer的*時區更有用。你打算存儲*只是*本地日期/時間?如果是這樣,那將會失去有關DST「回退」轉換的信息......並且如果您更改服務器時區或具有多個時區,將導致可怕的問題。 UTC是時間戳的*右邊*時區。) –

+2

至於你的PS - 如果有人推動你做一些不好的主意,那麼你有責任推動它。不要只跟隨不好的想法。 –

+0

*服務器的*時區是絕對不相關的。但是,您可能需要存儲僅限日期的值,例如存儲生日。爲此,請參閱[我的答案](http://stackoverflow.com/a/27492162/634824)。同樣可能適用於無時區的本地日期和時間,但不適用於此處顯示的創建日期和修改日期。那些應該*總是*使用UTC,通過Mongo的'ISODate'對象。 –

回答

0

甚至認爲它是不保存時間在本地格式一個很好的做法,但是這可能幫助 -

date = new Date(); //2017-04-25T06:23:36.510Z 
date.toLocaleTimeString(); //'11:53:36 AM' 
localDate = ""+d; //'Tue Apr 25 2017 11:53:36 GMT+0530 (IST)' 

更改都將完成,其中要保存的對象 -

var date = new Date(); //2017-04-25T06:23:36.510Z 
date.toLocaleTimeString(); //'11:53:36 AM' 
var localDate = ""+d; //'Tue Apr 25 2017 11:53:36 GMT+0530 (IST)' 

var newModel = new ModelSchema() 
newModel.description = 'Something'; 
newModel.created = locaDate; 
newModel.save(function(err) { 
    if (err) 
    throw err; 
    return done(null, newUser); 
}); 
+0

與我目前的貓鼬模式,我將如何將其保存在分貝? –

+0

我已根據您的要求作出更改,請看看 – Ayush

0

可以保存用戶時區並在更新時將時區值添加到此新對象。最好使用moment.js來轉換它。 moment

相關問題