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;