जावास्क्रिप्ट का उपयोग करके एक विशिष्ट तिथि के लिए युगांतर प्राप्त करें


जवाबों:


181

आप एक Dateऑब्जेक्ट बना सकते हैं , और getTimeउस पर कॉल कर सकते हैं :

new Date(2010, 6, 26).getTime() / 1000

12
डेट कंस्ट्रक्टर के लिए महीने के तर्क में थोड़ी स्थिरता का अभाव है और वास्तव में यह शून्य-आधारित है। इसका मतलब 7 अगस्त है, इसलिए आपको
एंडी ई

6
@ और - यह बाकी को रखते हुए महीनों को ऑफसेट करने के लिए एक अजीब विचार है, और वास्तव में इस तरह की चीज है जो अंतरिक्ष शटल को पागल कर सकती है, अगर जावास्क्रिप्ट कभी भी वहां इस्तेमाल किया जा सकता था :)
अनुराग

6
संभवतः बेहतर होगा: नई तिथि ("2010-7-26")। गेटटाइम () / 1000 तो आपको ऑफ़सेट के बारे में सोचने की ज़रूरत नहीं है।
विंसेंट मैकनब जूल

5
@ new Date("2010-7-26")इंटरनेट : इंटरनेट एक्सप्लोरर में पार्स नहीं होगा। डेट कंस्ट्रक्टर Date.parse () पद्धति पर निर्भर करता है जब एक स्ट्रिंग पास की जाती है, जो कि ECMA-262 3rd संस्करण में निर्भर है और परिणामस्वरूप, IE में कुख्यात रूप से अनम्य है।
एंडी ई

कोई संभावित त्रुटियों या गलतफहमी को कम करके समय क्षेत्र को भी निर्दिष्ट कर सकता है। नई तिथि ("जनवरी 1, 1970 GMT + 00: 00, 00:01") जैसे जावास्क्रिप्ट दिनांक को तुरंत हटाने के लिए फ़ायरफ़ॉक्स, ओपेरा और क्रोम के वास्तविक (लिनक्स-) संस्करण का समर्थन करते हैं; जो सही महीने के प्रारूप के बारे में भ्रम को कम करता है।
माइकल बेस्टे




0
Number(new Date(2010, 6, 26))

ऊपर की चीजों की तरह ही काम करता है। यदि आप सेकंड की जरूरत है भूल नहीं है/ 1000


0

कुछ उत्तर जावास्क्रिप्ट तिथि ऑब्जेक्ट के लिए समय क्षेत्र में भिन्नता के दुष्प्रभावों की व्याख्या नहीं करते हैं। तो आपको इस जवाब पर विचार करना चाहिए अगर यह आपके लिए चिंता का विषय है।

विधि 1: मशीन का टाइमज़ोन आश्रित

डिफ़ॉल्ट रूप से, जावास्क्रिप्ट मशीन की टाइमज़ोन पर विचार करते हुए एक तारीख देता है, इसलिए getTime()परिणाम कंप्यूटर से कंप्यूटर में भिन्न होता है। आप चल रहे इस व्यवहार की जांच कर सकते हैं:

new Date(1970, 0, 1, 0, 0, 0, 0).getTime()
    // Since 1970-01-01 is Epoch, you may expect ZERO
    // but in fact the result varies based on computer's timezone

यह एक समस्या नहीं है अगर आप वास्तव में एपोक के बाद से अपना समय चाहते हैं। इसलिए यदि आप वर्तमान तिथि या कंप्यूटर के टाइमज़ोन के आधार पर निर्दिष्ट तिथि के लिए एपोक के बाद से समय प्राप्त करना चाहते हैं , तो आप इस पद्धति का उपयोग जारी रखने के लिए स्वतंत्र हैं।

// Seconds since Epoch (Unix timestamp format)

new Date().getTime() / 1000             // local Date/Time since Epoch in seconds
new Date(2020, 11, 1).getTime() / 1000  // time since Epoch to 2020-12-01 00:00 (local timezone) in seconds

// Milliseconds since Epoch (used by some systems, eg. JavaScript itself)

new Date().getTime()                    // local Date/Time since Epoch in milliseconds
new Date(2020,  0, 2).getTime()         // time since Epoch to 2020-01-02 00:00 (local timezone) in milliseconds

// **Warning**: notice that MONTHS in JavaScript Dates starts in zero (0 = January, 11 = December)

विधि 2: मशीन का टाइमज़ोन स्वतंत्र

हालाँकि, यदि आप टाइमज़ोन में बदलावों की सवारी करना चाहते हैं और यूटीसी (यानी, टाइमज़ोन इंडिपेंडेंट) में निर्दिष्ट तिथि के लिए ईपॉच के बाद से समय प्राप्त करना चाहते हैं, तो आपको Date.UTCअपने टाइमज़ोन से यूटीसी करने के लिए विधि का उपयोग करने या तारीख को स्थानांतरित करने की आवश्यकता है :

Date.UTC(1970,  0, 1)
    // should be ZERO in any computer, since it is ZERO the difference from Epoch

    // Alternatively (if, for some reason, you do not want Date.UTC)
    const timezone_diff = new Date(1970, 0, 1).getTime()  // difference in milliseconds between your timezone and UTC
    (new Date(1970,  0, 1).getTime() - timezone_diff)
    // should be ZERO in any computer, since it is ZERO the difference from Epoch

तो, इस विधि का उपयोग कर (या, वैकल्पिक रूप से, अंतर को घटाते हुए), परिणाम होना चाहिए:

// Seconds since Epoch (Unix timestamp format)

Date.UTC(2020,  0, 1) / 1000  // time since Epoch to 2020-01-01 00:00 UTC in seconds

    // Alternatively (if, for some reason, you do not want Date.UTC)
    const timezone_diff = new Date(1970, 0, 1).getTime()
    (new Date(2020,  0, 1).getTime() - timezone_diff) / 1000  // time since Epoch to 2020-01-01 00:00 UTC in seconds
    (new Date(2020, 11, 1).getTime() - timezone_diff) / 1000  // time since Epoch to 2020-12-01 00:00 UTC in seconds

// Milliseconds since Epoch (used by some systems, eg. JavaScript itself)

Date.UTC(2020,  0, 2)   // time since Epoch to 2020-01-02 00:00 UTC in milliseconds

    // Alternatively (if, for some reason, you do not want Date.UTC)
    const timezone_diff = new Date(1970, 0, 1).getTime()
    (new Date(2020,  0, 2).getTime() - timezone_diff)         // time since Epoch to 2020-01-02 00:00 UTC in milliseconds

// **Warning**: notice that MONTHS in JavaScript Dates starts in zero (0 = January, 11 = December)

IMO, जब तक आप यह नहीं जानते कि आप क्या कर रहे हैं (ऊपर नोट देखें), तो आपको मेथड 2 पसंद करना चाहिए , क्योंकि यह स्वतंत्र है।


ध्यान दें

यद्यपि इस उत्तर में पुनर्संयोजन, और चूँकि Date.UTCकोई निर्दिष्ट तिथि / समय के बिना काम नहीं करता है, आप वैकल्पिक दृष्टिकोण का उपयोग करने और इस तरह से कुछ करने में इच्छुक हो सकते हैं:

const timezone_diff = new Date(1970, 0, 1).getTime()
(new Date().getTime() - timezone_diff)  // <-- !!! new Date() without arguments
    // means "local Date/Time subtracted by timezone since Epoch" (?)

इसका कोई मतलब नहीं है और यह शायद गलत है (आप तिथि को संशोधित कर रहे हैं)। ऐसा नहीं करने के लिए जागरूक रहें। यदि आप वर्तमान तिथि से युग के बाद से समय प्राप्त करना चाहते हैं और हैं, तो आप संभवतः विधि 1 का उपयोग करके ठीक हैं ।


0

Date.parse()विधि किसी दिनांक का एक स्ट्रिंग निरूपण करती है, और तब से मिलीसेकंड की संख्या लौटा देती है January 1, 1970, 00:00:00 UTC

const unixTimeZero = Date.parse('01 Jan 1970 00:00:00 GMT');
const javaScriptRelease = Date.parse('04 Dec 1995 00:12:00 GMT');

console.log(unixTimeZero);
// expected output: 0

console.log(javaScriptRelease);
// expected output: 818035920000

और देखें: Date.parse ()

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