जावास्क्रिप्ट में दिन की शुरुआत और अंत कैसे प्राप्त करें?


271

टाइमस्टैम्प (GMT) में आज (00:00:00) और अंत (23:59:59) कैसे प्राप्त करें? कंप्यूटर स्थानीय समय का उपयोग करता है।

जवाबों:


526
var start = new Date();
start.setHours(0,0,0,0);

var end = new Date();
end.setHours(23,59,59,999);

alert( start.toUTCString() + ':' + end.toUTCString() );

यदि आपको उन लोगों से यूटीसी समय प्राप्त करने की आवश्यकता है, तो आप उपयोग कर सकते हैं UTC()


24
मैं अनुशंसा करूंगा कि var end = new Date(start.getTime());यह सुनिश्चित करने के लिए कि आपके पास समय में एक ही बिंदु है - उस स्थिति में जब आप प्रारंभ और समाप्ति प्रारंभ के बीच की तारीखें बदलते हैं - यह हो सकता है - बस एक अच्छी आदत पाने के लिए
मार्टीन डेविस

@MartynDavis जब सभी सामान्य ऑपरेशन होते हैं, तो आमतौर पर लगभग ०-२ टिक बीच-बीच में होते हैं, लेकिन यह इस बात पर निर्भर करता है कि सीपीयू कितना व्यस्त है, तो यह करने के लिए समझ में आता है कि अगर आप १ टिक की शुद्धता के बारे में चिंतित हैं।
जेसन सेब्रिंग

14
मैं सार्वभौमिक समय प्राप्त करने के setUTCHoursबजाय इसका उपयोग करने की भी सिफारिश setHours
करूंगा

2
हो सकता है कि चीजें बदल गई हों, लेकिन मेरे लिए यह पिछले दिन के लिए यूटीसी शुरू करने के लिए सेट है, और पिछले दिन के लिए यूटीसी समाप्त होने के लिए।
डेविड जे

5
कृपया @ sidonaldson की अत्यंत महत्वपूर्ण टिप्पणी पढ़ें। setHoursयूटीसी घंटों के बजाय, स्थानीय घंटे सेट करना खतरनाक है।
माइकल

229

क्षणांश लाइब्रेरी का उपयोग करते हुए , इसे क्षण की वर्तमान दिनांक ऑब्जेक्ट पर startOf()और endOf()विधियों के साथ प्राप्त किया जा सकता है , स्ट्रिंग 'day'को तर्क के रूप में पारित करना :

स्थानीय GMT:

var start = moment().startOf('day'); // set to 12:00 am today
var end = moment().endOf('day'); // set to 23:59 pm today

UTC के लिए:

var start = moment.utc().startOf('day'); 
var end = moment.utc().endOf('day'); 

22
जावास्क्रिप्ट समय से संबंधित सभी चीजों के लिए एक-स्टॉप-शॉप है। हमेशा आयात के लायक।
डैनियल एफ

8
और हमें .toDate()तारीख पाने के लिए अंत में उपयोग करना चाहिए । var end = moment().endOf('day').toDate();
यारास

5
जोड़ने के .unix()अंत में सेकंड में यूनिक्स टाइमस्टैम्प प्राप्त करने के लिए :) इस तरह:moment().startOf('day').unix()
लुकास Liesis

5
अगर मैं पूर्वनिर्धारित दिनांक वस्तु है जैसे पल js किसी भी तरह काम नहीं करता है जैसे moment(new Date()).endOf("day");काम नहीं करता है, लेकिन moment().endOf("day");काम करता है।
बी। केमर

5
@KlasMellbourn एक निर्दिष्ट समय क्षेत्र के लिए दिन की शुरुआत पाने के लिए, आप इसका उपयोग moment-timezoneऔर कर सकते हैं moment().tz('America/Chicago').startOf('day').toDate():।
चाड जॉन्सन

8

Luxon.js लाइब्रेरी का उपयोग करके , पैरामीटर के रूप में 'दिन' पास करके स्टार्टऑफ और एंडऑफ विधियों का उपयोग करके प्राप्त किया जा सकता है

var DateTime = luxon.DateTime;
DateTime.local().startOf('day').toUTC().toISO(); //2017-11-16T18:30:00.000Z
DateTime.local().endOf('day').toUTC().toISO(); //2017-11-17T18:29:59.999Z
DateTime.fromISO(new Date().toISOString()).startOf('day').toUTC().toISO(); //2017-11-16T18:30:00.000Z

.toUTC () निकालें यदि आपको केवल स्थानीय समय की आवश्यकता है

और आप पूछ सकते हैं कि क्यों नहीं। क्षण , इसका उत्तर यहां है।



6

यदि आप GMT में टाइमस्टैम्प में रुचि रखते हैं , तो आप यह भी कर सकते हैं, जिसे अलग-अलग अंतराल (घंटे:, 1000 * 60 * 6012 घंटे: 1000 * 60 * 60 * 12आदि) के लिए आसानी से अनुकूलित किया जा सकता है ।

const interval = 1000 * 60 * 60 * 24; // 24 hours in milliseconds

let startOfDay = Math.floor(Date.now() / interval) * interval;
let endOfDay = startOfDay + interval - 1; // 23:59:59:9999

1
महत्वपूर्ण चेतावनी: यह केवल तभी काम करता है जब आप UTC में समय चाहते हैं। (यह वही है जो सवाल के लिए पूछा गया ... लेकिन मुझे लगता है कि मुझे किसी को भी चेतावनी देनी चाहिए जो Google खोज से यहां आया है और इसे महसूस नहीं किया है।)
किप

4

FYI करें (Tvanfosson का विलय संस्करण)

जब आप फ़ंक्शन को कॉल कर रहे हों तो यह वास्तविक दिनांक => तिथि वापस आ जाएगी

export const today = {
  iso: {
    start: () => new Date(new Date().setHours(0, 0, 0, 0)).toISOString(),
    now: () => new Date().toISOString(),
    end: () => new Date(new Date().setHours(23, 59, 59, 999)).toISOString()
  },
  local: {
  start: () => new Date(new Date(new Date().setHours(0, 0, 0, 0)).toString().split('GMT')[0] + ' UTC').toISOString(),
  now: () => new Date(new Date().toString().split('GMT')[0] + ' UTC').toISOString(),
  end: () => new Date(new Date(new Date().setHours(23, 59, 59, 999)).toString().split('GMT')[0] + ' UTC').toISOString()
  }
}

// कैसे इस्तेमाल करे

today.local.now(); //"2018-09-07T01:48:48.000Z" BAKU +04:00
today.iso.now(); // "2018-09-06T21:49:00.304Z" * 

* यह Java8 पर त्वरित समय प्रकार के लिए लागू होता है जो आपके क्षेत्र के आधार पर आपके स्थानीय समय को स्वचालित रूप से परिवर्तित कर देता है। (यदि आप वैश्विक एप्लिकेशन लिखने की योजना बना रहे हैं)


0

मैं डेट हेरफेर के लिए डेट -फेंस लाइब्रेरी का उपयोग करना पसंद करता हूं । यह वास्तव में महान मॉड्यूलर और सुसंगत उपकरण है। आप दिन की शुरुआत और अंत इस तरह से कर सकते हैं:

var startOfDay = dateFns.startOfDay;
var endOfDay = dateFns.endOfDay;

console.log('start of day ==> ', startOfDay(new Date('2015-11-11')));
console.log('end of day ==> ', endOfDay(new Date('2015-11-11')));
<script src="https://cdnjs.cloudflare.com/ajax/libs/date-fns/1.29.0/date_fns.min.js"></script>


यूटीसी हैंडलिंग के लिए कोई समर्थन नहीं।
Dobromir Hristov
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.