जवाबों:
setHours
विधि वैकल्पिक ले जा सकते हैं minutes
, seconds
और ms
तर्क, उदाहरण के लिए:
var d = new Date();
d.setHours(0,0,0,0);
यह आपके वर्तमान समय-क्षेत्र00:00:00.000
का समय निर्धारित करेगा , यदि आप UTC समय में काम करना चाहते हैं, तो आप विधि का उपयोग कर सकते हैं ।setUTCHours
new Date(new Date().setHours(0,0,0,0))
:।
बस यह स्पष्ट करना चाहता था कि स्वीकृत उत्तर से स्निपेट निकटतम आधी रात को अतीत में देता है :
var d = new Date();
d.setHours(0,0,0,0); // last midnight
यदि आप भविष्य में निकटतम मध्यरात्रि प्राप्त करना चाहते हैं , तो निम्न कोड का उपयोग करें:
var d = new Date();
d.setHours(24,0,0,0); // next midnight
ऑब्जेक्ट के लिए एक-लाइनर कॉन्फ़िगर करता है:
new Date(new Date().setHours(0,0,0,0));
एक तत्व बनाते समय:
dateFieldConfig = {
name: "mydate",
value: new Date(new Date().setHours(0, 0, 0, 0)),
}
बस इसे यहां जोड़ने जा रहा हूं क्योंकि मैं इस पृष्ठ पर उतरा हूं जो इस क्षण को करने की तलाश में हूं । जेएस और अन्य भी कर सकते हैं।
[देश: शब्द "पल" पहले से ही इस पृष्ठ पर कहीं और दिखाई देता है इसलिए खोज इंजन यहां प्रत्यक्ष रूप से दिखाई देते हैं, और क्षण.js वारंट के लिए पर्याप्त रूप से कवर किया जा रहा है कि यह कितनी बार अन्य तिथि-संबंधित SO प्रश्नों में उल्लिखित है]
तो, 2.0.0 और इसके बाद के संस्करण में:
date.startOf('day');
पिछले संस्करणों के लिए:
date.sod();
डॉक्स:
moment(DATE_OBJECT).startOf('day').toDate();
आप शायद उपयोग कर सकते हैं
new Date().setUTCHours(0,0,0,0)
यदि आपको केवल एक बार मूल्य की आवश्यकता है।
@ दान के उदाहरण में उपयोगिता जोड़ते हुए, मुझे अगले दिन या आधी रात को खोजने की आवश्यकता थी।
var d = new Date();
if(d.getHours() < 12) {
d.setHours(12,0,0,0); // next midnight/midday is midday
} else {
d.setHours(24,0,0,0); // next midnight/midday is midnight
}
इसने मुझे एक घटना के लिए एक आवृत्ति टोपी सेट करने की अनुमति दी, केवल इसे सुबह में एक बार और दोपहर में एक बार मेरी साइट पर किसी भी आगंतुक के लिए होने दिया। पकड़ी गई तिथि का उपयोग कुकी की समाप्ति निर्धारित करने के लिए किया गया था।
अगर गर्मियों की तारीखों की गणना करें तो अक्सर आधी रात (CEST) से 1 घंटा अधिक या एक घंटा कम होगा। जब तारीखें वापस आती हैं तो यह 1 दिन का अंतर होता है। इसलिए तिथियों को निकटतम मध्यरात्रि के लिए चक्कर लगाना पड़ता है। तो कोड होगा (जैसमीन के लिए):
var d = new Date();
if(d.getHours() < 12) {
d.setHours(0,0,0,0); // previous midnight day
} else {
d.setHours(24,0,0,0); // next midnight day
}
मैंने अपने लिए इसे संभालने के लिए एक युगल प्रोटोटाइप बनाया है।
// This is a safety check to make sure the prototype is not already defined.
Function.prototype.method = function (name, func) {
if (!this.prototype[name]) {
this.prototype[name] = func;
return this;
}
};
Date.method('endOfDay', function () {
var date = new Date(this);
date.setHours(23, 59, 59, 999);
return date;
});
Date.method('startOfDay', function () {
var date = new Date(this);
date.setHours(0, 0, 0, 0);
return date;
});
यदि आप सुरक्षित जांच नहीं चाहते हैं, तो आप बस उपयोग कर सकते हैं
Date.prototype.startOfDay = function(){
/*Method body here*/
};
उदाहरण उपयोग:
var date = new Date($.now()); // $.now() requires jQuery
console.log('startOfDay: ' + date.startOfDay());
console.log('endOfDay: ' + date.endOfDay());
यदि आपके पास पहले से ही अपने प्रोजेक्ट में एक निर्भरता के रूप में d3.js हैं, या इसे लाने में कोई आपत्ति नहीं है, तो d3-time ( d3.js लाइब्रेरी v4.0.0 के रूप में मॉड्यूलर है ) को अंतराल मिला है ।
"डिफ़ॉल्ट" मानों को सेट करते समय वे उपयोगी साबित हो सकते हैं, जैसे कि आधी रात, 0.00 सेकंड, महीने का पहला, आदि।
var d = new Date(); // Wed Aug 02 2017 15:01:07 GMT+0200 (CEST)
d3.timeHour(d) // Wed Aug 02 2017 00:00:00 GMT+0200 (CEST)
d3.timeMonth(d) // Tue Aug 01 2017 00:00:00 GMT+0200 (CEST)