Pokud v NodeJS používáte pro práci s databázi MongoDB knihovnu Mongoose a snažíte se ulehčit si práci při ukládání dat do collections skrze defaultní hodnotu prvku jako já:
var mongoose = require('mongoose');
var hist = mongoose.Schema({
timeStamp: {
type: Date,
default: Date.now()
}
});
Pak se dočkáte nemilého překvapení, že vám nebude čas v databázi sedět s reálným časem. Až jako já prohledáte všechny možnosti kde se na vašem serveru nastavuje timezone a zjsitíte, že máte vše OK, začnete pátrat kolem MongoDB, respektive přímo v Mongoose…
UTC
No a pak zjisíte, že váš čas je ukládán v UTC, a proto nesedí.
Řešení
Protože jsem v databázi měl opravdu skutečný čas, je potřeba zrušit hodnotu default v definici mongoose schematu vaší collection a datum s časem si vypočítat sám:
var utc = new Date(); utc.setHours( utc.getHours() + 2); var mujCas = utc;
