Z का अर्थ है "शून्य घंटे ऑफ़सेट" जिसे "ज़ुलु टाइम" (UTC) के रूप में भी जाना जाता है। जब आप डेटाबेस से तारीख की क्वेरी कर रहे होते हैं, तो दो संभावित परिदृश्य होते हैं कि तारीख बदल जाती है, या तो डेटाबेस परत में या एप्लिकेशन परत पर, इसे उस समय क्षेत्र में समायोजित करना जहां आप हैं।
तो उदाहरण के लिए यदि डेटाबेस सेटिंग वास्तविक डेटा प्राप्त करने पर स्वचालित रूप से यूटीसी में समय बचाती है तो इसे आपके वर्तमान समय क्षेत्र में परिवर्तित कर दिया जाएगा। लेकिन आपके उदाहरण से 2016-12-20 को 2016-12-19T23:00:00.000Z में बदल दिया गया है, तो मैं यह मान रहा हूं कि तारीख पर आपकी डेटाबेस सेटिंग इसे एक निश्चित समय क्षेत्र में सहेज रही है और फिर इसे यूटीसी में परिवर्तित कर रही है।
इसे ठीक करने के लिए अपने एप्लिकेशन तर्क या डेटाबेस सेटिंग को समायोजित करने का प्रयास करें, मेरे लिए मैं इसे एप्लिकेशन स्तर पर करता हूं और यूटीसी में सहेजने के लिए डीबी में तारीख को बनाए रखता हूं।
अंतर देखने के लिए इसे आजमाएं और आपको अपनी समस्या को हल करने का संकेत दे सकता है:
var currentDate = new Date();
var isoDate = currentDate.toISOString();
console.log(currentDate, isoDate);