मुझे जावास्क्रिप्ट में UTC टाइमस्टैम्प कैसे मिलेगा?


157

एक वेब एप्लिकेशन लिखते समय, यह यूबी टाइमस्टैम्प के रूप में DB में सभी डेटासेट को स्टोर (सर्वर साइड) करने के लिए समझ में आता है ।

मुझे आश्चर्य हुआ जब मैंने देखा कि आप जावास्क्रिप्ट में Timezone हेरफेर के मामले में मूल रूप से बहुत कुछ नहीं कर सकते हैं।

मैंने दिनांक ऑब्जेक्ट को थोड़ा बढ़ा दिया। क्या यह फ़ंक्शन समझ में आता है? मूल रूप से, हर बार जब मैं सर्वर को कुछ भी भेजता हूं, तो यह इस फ़ंक्शन के साथ प्रारूपित होने जा रहा है ...

क्या आप यहाँ कोई बड़ी समस्या देख सकते हैं? या शायद एक अलग कोण से एक समाधान?

Date.prototype.getUTCTime = function(){ 
  return new Date(
    this.getUTCFullYear(),
    this.getUTCMonth(),
    this.getUTCDate(),
    this.getUTCHours(),
    this.getUTCMinutes(), 
    this.getUTCSeconds()
  ).getTime(); 
}

यह सिर्फ मेरे लिए थोड़ा जटिल लगता है। और मैं प्रदर्शन के बारे में इतना निश्चित नहीं हूं।


मुझे पता है कि यह एक पुराना सवाल है, लेकिन कोशिश करें कि डेट ऑब्जेक्ट की तरह देशी वस्तुओं का विस्तार न करें। Upvoted क्योंकि मुझे सवाल ही पसंद है।
कोशिशें

Date.parse (नई तारीख ()। toUTCString ())
सागी

25
यह एक पुराना प्रश्न है जो आज मेरे फ़ीड में आया है, और यह गलत सूचनाओं से भरा है। UTC में टाइमस्टैम्प हमेशा रहता है। new Date().toString()आप वर्तमान समय क्षेत्र समय प्रतिनिधित्व दिखाएगा, new Date().toUTCString()आप UTC समय रेपर दिखाई देगा, लेकिन new Date().getTime()है हमेशा यूटीसी , क्योंकि जो यूनिक्स समय के रूप में परिभाषित किया जाता है कि: "यूनिक्स समय (भी इसे POSIX समय या युग समय के रूप में जाना जाता है) instants वर्णन करने के लिए एक प्रणाली है समय में, 00:00:00 के बाद से समाप्त होने वाले सेकंड की संख्या के रूप में परिभाषित किया गया है समन्वित यूनिवर्सल टाइम (UTC), गुरुवार, 1 जनवरी 1970, लीप सेकंड की गिनती नहीं। "
Amadan

जवाबों:


155
  1. इस तरह से निर्मित तिथियां स्थानीय समय-क्षेत्र का उपयोग करती हैं, जिससे निर्माण की तारीख गलत हो जाती है। किसी निश्चित दिनांक ऑब्जेक्ट के टाइमज़ोन को सेट करने के लिए उसे डेट स्ट्रिंग से निर्माण करना है जिसमें टाइमज़ोन शामिल है। (मुझे समस्या थी कि पुराने एंड्रॉइड ब्राउज़र में काम करना है।)

  2. ध्यान दें कि getTime()सामान्य सेकंड नहीं, मिलीसेकंड लौटाता है।

एक यूटीसी / यूनिक्स टाइमस्टैम्प के लिए, निम्नलिखित को पर्याप्त होना चाहिए:

Math.floor((new Date()).getTime() / 1000)

यह परिणाम में वर्तमान समय क्षेत्र को ऑफसेट करेगा। एक स्ट्रिंग प्रतिनिधित्व के लिए, डेविड एलिस का जवाब काम करता है।

स्पष्टीकरण देना:

new Date(Y, M, D, h, m, s)

उस इनपुट को स्थानीय समय के रूप में माना जाता है । यदि यूटीसी समय पास किया जाता है, तो परिणाम अलग-अलग होंगे। निरीक्षण (मैं GMT +02 में हूँ: 00 अभी, और यह 07:50 है):

> var d1 = new Date();
> d1.toUTCString();
"Sun, 18 Mar 2012 05:50:34 GMT" // two hours less than my local time
> Math.floor(d1.getTime()/ 1000)
1332049834 

> var d2 = new Date( d1.getUTCFullYear(), d1.getUTCMonth(), d1.getUTCDate(), d1.getUTCHours(), d1.getUTCMinutes(), d1.getUTCSeconds() );
> d2.toUTCString();
"Sun, 18 Mar 2012 03:50:34 GMT" // four hours less than my local time, and two hours less than the original time - because my GMT+2 input was interpreted as GMT+0!
> Math.floor(d2.getTime()/ 1000)
1332042634

यह भी ध्यान दें कि इसके getUTCDate()लिए प्रतिस्थापित नहीं किया जा सकता है getUTCDay()। यह है क्योंकिgetUTCDate() महीने का दिन लौटाता है ; जबकि, सप्ताह का दिनgetUTCDay() लौटाता है


1
1) मैंने एक तारीख का निर्माण नहीं किया ... मैंने एक प्रोटोटाइप फ़ंक्शन जोड़ा जो इस पर काम करता था । 2) अच्छी बात है, मुझे Math.floor / 1000 करना चाहिए - लेकिन फिर भी मुझे मौजूदा तिथि ऑब्जेक्ट के UTC टाइमस्टैम्प के लिए उस फ़ंक्शन की आवश्यकता होगी ... सही?
मर्क

@ मार्सर: 1) आप कॉल कर रहे हैं new Date(), जो आपके यूटीसी इनपुट से एक नई तारीख बनाता है, लेकिन इसे स्थानीय दिनांक / समय के रूप में मानता है। 2) हां, आपको Math.floor(this.getTime() / 1000)इस मामले में उपयोग करना चाहिए ।
डीसीडर

यहाँ जवाब देने के रूप में मुझे कोड को अपडेट करने की आवश्यकता है ... यह एक मौजूदा तारीख के लिए यूटीसी में यूनिक्स टाइमस्टैम्प है : फ़ंक्शन () {वापसी Math.floor (नई तारीख (this.getUTFullYear) (), यह .getUTCMonth ()। it.getUTCDate (), this.getUTCHours (), this.getUTCMinutes (), this.getUTCSeconds ()) .getTime () / 1000); } इसका मतलब है कि मैं कर सकता हूं: var n = new Date (2008,10,10) ... ... n.getUTCTime (); (यह डि.गेंटर से n.getUTCTime ()) होगा
Merc

1
धन्यवाद भाई इसकी काम कर रही फ़ाइल Math.floor ((नई तिथि ())। GetTime () / 1000)
मनोज पटेल

51

तुम भी getTimezoneOffset और getTime का उपयोग कर सकते हैं,

x = new Date()
var UTCseconds = (x.getTime() + x.getTimezoneOffset()*60*1000)/1000;

console.log("UTCseconds", UTCseconds)


4
धन्यवाद, यह इंटरनेट पर पाया जाना कहीं नहीं है!
थेफानिस पैंटलैड्स

मैं निम्नलिखित कोड का परीक्षण करता हूं var tt = new Date('Thu Jan 01 1970 08:00:00 GMT+0800 (China Standard Time)'); (tt.getTime() - tt.getTimezoneOffset()*60*1000)/1000:। लगता tt.getTime() - tt.getTimezoneOffset()है के लिए सही है GMT+0800
ज़ंगव

1
यह अधिक बेहतर हैvar UTCseconds = (Math.floor(x.getTime()/1000) + x.getTimezoneOffset()*60)
स्टेफन्सआरी

ऐसा लगता है कि यह लिखित रूप में काम नहीं करता है .. ऐसा लगता है कि आपको समय स्ट्रिंग में पास करना new Date()है जिसमें एक
टाइमज़ोन शामिल है..जिसमें

यह केवल गलत है, करने के लिए सौंपा मूल्य UTCseconds है नहीं यूटीसी सेकंड .. एक तिथि के समय मूल्य है यूटीसी, जो कुछ भी विधि का मतलब है कि यह समय में एक अलग पल का प्रतिनिधित्व द्वारा इसे बदलने।
8

34

पारंपरिक प्रारूप में यूटीसी समय प्राप्त करने का सबसे आसान तरीका इस प्रकार है:

new Date().toISOString()
"2016-06-03T23:15:33.008Z"

3
यह सही जवाब है। अन्य उत्तरों के बहुत सारे "सार्वभौमिक समय स्ट्रिंग" देते हैं, लेकिन वर्तमान "सार्वभौमिक समन्वित समय" नहीं देते हैं। मुझे समझ नहीं आता कि यहां सब कुछ इतना जटिल क्यों है।
गब्बर

शुक्रिया @gburton सत्य की सरल राह देखें। :)
तहसीन तुर्कोज़

1
मैं इसका उपयोग आसान YYYY-MM-DD- आधारित तुलनाओं के लिए ".split ('T') [0] के साथ करता हूं।
सीन ओ

@

यह एक यूटीसी समय स्ट्रिंग प्रदान करता है, लेकिन ओपी एक यूटीसी टाइमस्टैम्प (युग) के लिए पूछ रहा है
जोर्डे नेबॉट

13

मुझे वास्तव में लगता है कि j में दिनांक मान C # DateTime ऑब्जेक्ट्स की तुलना में कहीं बेहतर हैं। C # डेटटाइम ऑब्जेक्ट्स में एक तरह की प्रॉपर्टी होती है, लेकिन कोई सख्त अंतर्निहित टाइम ज़ोन नहीं होता है, और यदि आप दो गैर UTC और गैर स्थानीय समय के बीच कनवर्ट कर रहे हैं, तो टाइम ज़ोन रूपांतरण ट्रैक करना मुश्किल है। Js में, सभी दिनांक मानों में एक अंतर्निहित UTC मान होता है जिसे चारों ओर से पारित किया जाता है और यह ज्ञात है कि आप जो भी करते हैं उस समय या ज़ोन के रूपांतरणों की परवाह किए बिना। दिनांक ऑब्जेक्ट के बारे में मेरी सबसे बड़ी शिकायत अपरिभाषित व्यवहार की मात्रा है जिसे ब्राउज़र कार्यान्वयनकर्ताओं ने शामिल करने के लिए चुना है, जो उन लोगों को भ्रमित कर सकता है जो परीक्षण को पढ़ने और त्रुटि के साथ js में तारीखों पर हमला करते हैं। Iso8601.js जैसी किसी चीज़ का उपयोग करना इस भिन्न व्यवहार को दिनांक ऑब्जेक्ट के एकल कार्यान्वयन को परिभाषित करके हल करता है।

डिफ़ॉल्ट रूप से, युक्ति कहती है कि आप एक विस्तारित ISO 8601 दिनांक प्रारूप जैसे दिनांक बना सकते हैं

var someDate = new Date('2010-12-12T12:00Z');

तो आप इस तरह से सटीक यूटीसी समय का अनुमान लगा सकते हैं।

जब आप उस दिनांक मान को पास करना चाहते हैं जिस सर्वर पर आप कॉल करेंगे

someDate.toISOString();

या यदि आप एक मिलीसेकंड टाइमस्टैम्प (1 जनवरी 1970 यूटीसी से मिलीसेकंड की संख्या) के साथ काम करेंगे

someDate.getTime();

आईएसओ 8601 एक मानक है। यदि आप दिनांक ऑफ़सेट को शामिल करते हैं, तो आप इस बारे में भ्रमित नहीं हो सकते कि दिनांक स्ट्रिंग का क्या अर्थ है। एक डेवलपर के रूप में आपके लिए इसका मतलब यह है कि आपको कभी भी स्थानीय समय के रूपांतरणों से खुद को निपटना नहीं है । स्थानीय समय मान उपयोगकर्ता के लाभ के लिए विशुद्ध रूप से मौजूद हैं, और उनके स्थानीय समय में डिफ़ॉल्ट प्रदर्शन द्वारा दिनांक मान। सभी स्थानीय समय जोड़तोड़ आपको उपयोगकर्ता के लिए कुछ समझदार प्रदर्शित करने और उपयोगकर्ता इनपुट से तार बदलने की अनुमति देते हैं। जैसे ही आप कर सकते हैं यूटीसी में परिवर्तित करना अच्छा है, और जेएस दिनांक वस्तु यह काफी तुच्छ बनाता है।

नकारात्मक पक्ष में क्लाइंट के लिए समय क्षेत्र या लोकेल को बाध्य करने की बहुत गुंजाइश नहीं है (जो मुझे पता है), जो वेबसाइट-विशिष्ट सेटिंग्स के लिए कष्टप्रद हो सकता है, लेकिन मुझे लगता है कि इसके पीछे तर्क यह है कि यह एक उपयोगकर्ता है कॉन्फ़िगरेशन जिसे स्पर्श नहीं किया जाना चाहिए।

तो, संक्षेप में, कारण यह है कि समय क्षेत्र में हेरफेर के लिए बहुत अधिक देशी समर्थन नहीं है क्योंकि आप बस इसे नहीं करना चाहते हैं।


12

आपको आम तौर पर क्लाइंट की ओर से "टाइमजोन हेरफेर" करने की ज्यादा जरूरत नहीं है। एक नियम के रूप में, मैं 1 जनवरी, 1970 की आधी रात के बाद सेticks या " मिलीसेकंड की संख्या " के रूप में, यूटीसी तिथियों के साथ स्टोर करने और काम करने की कोशिश करता हूं । यह वास्तव में भंडारण, छँटाई, ऑफसेट की गणना को सरल करता है, और सबसे बढ़कर, आपको "डेलाइट सेविंग टाइम" समायोजन के सिरदर्द से छुटकारा दिलाता है। यहाँ एक छोटा जावास्क्रिप्ट कोड है जिसका मैं उपयोग करता हूँ।

वर्तमान UTC समय प्राप्त करने के लिए:

function getCurrentTimeUTC()
{
    //RETURN:
    //      = number of milliseconds between current UTC time and midnight of January 1, 1970
    var tmLoc = new Date();
    //The offset is in minutes -- convert it to ms
    return tmLoc.getTime() + tmLoc.getTimezoneOffset() * 60000;
}

फिर आपको आमतौर पर अपने स्थानीय समयक्षेत्र और प्रारूप के लिए अंतिम-उपयोगकर्ता के लिए दिनांक / समय प्रारूपित करने की आवश्यकता होती है । निम्नलिखित क्लाइंट कंप्यूटर पर दिनांक और समय स्वरूपों की सभी जटिलताओं का ध्यान रखता है:

function formatDateTimeFromTicks(nTicks)
{
    //'nTicks' = number of milliseconds since midnight of January 1, 1970
    //RETURN:
    //      = Formatted date/time
    return new Date(nTicks).toLocaleString();
}

function formatDateFromTicks(nTicks)
{
    //'nTicks' = number of milliseconds since midnight of January 1, 1970
    //RETURN:
    //      = Formatted date
    return new Date(nTicks).toLocaleDateString();
}

function formatTimeFromTicks(nTicks)
{
    //'nTicks' = number of milliseconds since midnight of January 1, 1970
    //RETURN:
    //      = Formatted time
    return new Date(nTicks).toLocaleTimeString();
}

तो निम्न उदाहरण:

var ticks = getCurrentTimeUTC();  //Or get it from the server

var __s = "ticks=" + ticks + 
    ", DateTime=" + formatDateTimeFromTicks(ticks) +
    ", Date=" + formatDateFromTicks(ticks) +
    ", Time=" + formatTimeFromTicks(ticks);

document.write("<span>" + __s + "</span>");

निम्नलिखित लौटाता है (मेरे अमेरिकी अंग्रेजी लोकेल के लिए):

टिक = 1409103400661, दिनांक समय = 8/26/2014 6:36:40 PM, तिथि = 8/26/2014, समय = 6: 36: 40 PM


1
getTimezoneOffsetअपने getCurrentTimeUTCफ़ंक्शन में मूल्य जोड़कर , आप वास्तव में समय में एक अलग बिंदु लौटा रहे हैं। का परिणाम यूटीसी में पहलेgetTime से ही है।
मैट जॉनसन-पिंट

1
@MattJohnson: यह गलत है। का नतीजा tmLoc.getTime()स्थानीय समय के मुकाबले ऑफसेट है। यह जांचना आसान है कि क्या आपके पास जावास्क्रिप्ट चलाने वाली किसी भी चीज की पहुंच है।
एहमद ०

2
क्षमा करें, लेकिन यह सच नहीं है। MDN संदर्भ देखें । आप इसे ECMAScript युक्ति में भी देख सकते हैं। §15.9.3.3 का वर्णन हैgetTime , जो आपको " 15.9.5 में परिभाषित "समय मूल्य" पर इंगित करता है , जो कि एक है PrimitiveValue, जैसा कि set15.9.3.3 में स्पष्ट रूप से यूटीसी के रूप में सेट है ।
मैट जॉनसन-पिंट

2
ठीक है, जब से आप के tmLocमाध्यम से प्राप्त करते हैं new Date(), तो यह एक ही बात है। समय क्षेत्र स्ट्रिंग tmLoc.toString()और इसी तरह की वस्तुओं के उत्पादन को प्रभावित करेगा , लेकिन यह प्रभावित नहीं करेगा। tmLoc.getTime() यह हमेशा UTC में 1970-01-01 की मध्यरात्रि के बाद से केवल एक मिलीसेकंड की संख्या है।
मैट जॉनसन-पिंट

1
@StefansArya://The offset is in minutes -- convert it to ms
ahmd0

5

मुझे लगता है कि यह एक बेहतर उपाय है

// UTC milliseconds
new Date(Date.now()+(new Date().getTimezoneOffset()*60000)).getTime()

// UTC seconds
new Date(Date.now()+(new Date().getTimezoneOffset()*60000)).getTime()/1000|0

एक और गलत जवाब, गेटटाइम यूटीसी ऑफसेट देता है, स्थानीय टाइमज़ोन ऑफसेट को जोड़ने से यह पूरी तरह से गड़बड़ हो जाता है। ECMAScript ऑफ़सेट पूर्व के लिए पश्चिम और -ve के लिए + ve हैं, इसलिए उन्हें स्थानीय प्राप्त करने के लिए UTC से घटाया जाना चाहिए। लेकिन चूंकि समय मूल्य यूटीसी के साथ शुरू करना है, इसलिए अनिवार्य रूप से इसे स्थानीय ऑफसेट से विपरीत दिशा में यूटीसी से दूर स्थानांतरित कर देता है।
रॉब

4

यदि आप एक लाइनर चाहते हैं , तो UTC यूनिक्स टाइमस्टैम्प को जावास्क्रिप्ट में बनाया जा सकता है:

var currentUnixTimestap = ~~(+new Date() / 1000);

यह प्रणाली के समय क्षेत्र को ध्यान में रखेगा। यह मूल रूप से सेकंड के बाद से सेकंड में बीता हुआ समय है।

यह काम किस प्रकार करता है:

  • दिनांक ऑब्जेक्ट बनाएँ new Date():।
  • unary +इसे बनाने के लिए ऑब्जेक्ट निर्माण से पहले जोड़कर टाइमस्टैम्प में कनवर्ट करें timestamp integer। : +new Date()
  • मिलीसेकंड को सेकंड में बदलें: +new Date() / 1000
  • पूर्णांक से मान को राउंड करने के लिए डबल टिल्ड का उपयोग करें । :~~(+new Date())

7
यह ( tildeनहीं tilda) है। अफसोस की बात है कि यह मुझे टाइपो को हटाने नहीं देगा, मुझे कम से कम 6 चरित्र संपादन करने होंगे। चिकना, स्टैकएक्सचेंज, चिकनी
फ्रेड

3
इसका उपयोग न करें । वर्तमान एक्जाम ऐनक के साथ, बिटवाइज़ ऑपरेशंस (जैसे टिल्ड - बिटवाइज़ नॉट) 32 बिट्स के हस्ताक्षरित पूर्णांक मान को संभालते हैं। इसका मतलब यह है कि यह टिल्ड जादू 19 जून 2038 के बाद काम नहीं करेगा जब टाइमस्टैम्प मूल्य 32 बिट पूर्णांक पूर्णांक के अधिकतम मूल्य पर होगा। jsfiddle.net/phb20ymb
Sharky

3

मैं यह स्पष्ट करना चाहता हूं कि नई तिथि ()। GetTime () वास्तव में एक UTC मान लौटाती है, इसलिए यह स्थानीय स्तर पर अज्ञेय के लिए तारीखों को संग्रहीत करने और प्रबंधित करने के लिए वास्तव में एक उपयोगी तरीका है।

दूसरे शब्दों में, सभी यूटीसी जावास्क्रिप्ट कार्यों से परेशान न हों। इसके बजाय, सिर्फ Date.getTime () का उपयोग करें।

स्पष्टीकरण पर अधिक जानकारी यहाँ है: यदि जावास्क्रिप्ट "(नई तिथि ())। GetTime ()" 2 अलग-अलग टाइमज़ोन से चलाया जाता है।


3

मैं निम्नलिखित का उपयोग करता हूं:

Date.prototype.getUTCTime = function(){ 
  return this.getTime()-(this.getTimezoneOffset()*60000); 
};

एक बार इस विधि को परिभाषित करने के बाद आप यह कर सकते हैं:

var utcTime = new Date().getUTCTime();

सबसे साफ समाधान। धन्यवाद!
avalanche1

लेकिन यह तिथियों को भेजने का एक साफ समाधान नहीं है, क्योंकि टाइमस्टैम्प हमेशा यूटीसी होते हैं। तारीखें भेजते समय मेरे लिए सबसे अच्छा समाधान, "dd / MM / yyyy HH: mm: ss" जैसे स्ट्रिंग प्रतिनिधित्व का उपयोग करना है और फिर इसे UTC टाइमस्टैम्प या जो भी प्राप्त करने के लिए सर्वर के डिफ़ॉल्ट टाइमज़ोन के साथ सर्वर साइड पर पार्स करें। इसका जवाब
jlbofh

2
एक स्ट्रिंग पार्स करना - आप उस साफ कह रहे हैं? meh
हिमस्खलन 1

सुनिश्चित करें, आईएसओ विनिर्देशों के अनुसार स्ट्रिंग प्रारूप में एक तिथि उत्पन्न करने के तरीके हैं। विधि toISOString () है। आप जावा में साफ-सफाई कर सकते हैं जैसे कुछ का उपयोग करके:DateTime dt = new DateTime ("2018-07-15T02:36:00+02:00");
jlbofh

एक और गलत जवाब, this.getTime()एक यूटीसी ऑफसेट लौटाता है, स्थानीय टाइमज़ोन ऑफसेट को घटाते हुए इसे स्थानीय बनाता है, यूटीसी नहीं इसलिए गेटक्यूटाइम एक स्थानीय ऑफसेट देता है, यूटीसी नहीं।
रॉब

2

मुझे आश्चर्य है कि यह सवाल कितना जटिल हो गया है।

ये सभी समान हैं, और उनके पूर्णांक मान सभी === © समय: D

console.log((new Date()).getTime() / 1000, new Date().valueOf() / 1000, (new Date() - new Date().getTimezoneOffset() * 60 * 1000) / 1000);

मेरा विश्वास मत करो, चेकआउट: http://www.epochconverter.com/


2

चूँकि आप new Date().toUTCString()एक स्ट्रिंग लौटाते हैं जैसे "Wed, 11 Oct 2017 09:24:41 GMT"आप अंतिम 3 वर्णों को काट सकते हैं और कटा हुआ स्ट्रिंग पास कर सकते हैं new Date():

new Date()
// Wed Oct 11 2017 11:34:33 GMT+0200 (CEST)

new Date(new Date().toUTCString().slice(0, -3))
// Wed Oct 11 2017 09:34:33 GMT+0200 (CEST)

1

संपादित करें: नीचे दिया गया कोड काम नहीं करता है। मैं हमेशा से यह मान रहा था कि नई तारीख (। GetTime) 1 जनवरी 1970 के बाद से सेकंड की संख्या में लौटी समयरेखा में। यह मामला नहीं है: getTime () UTC में सेकंड की संख्या लौटाता है। तो, नीचे दिया गया कोड सकल अधिक समायोजन करता है। आप सबको धन्यवाद!]

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

इसलिए, अगर मेरे पास कोई दिनांक ऑब्जेक्ट है:

var d = new Date(2009,01,31)

मैं एक समारोह के बाद था जो मुझे "द यूटीसी यूनिक्स टाइमस्टैम्प" बताएगा।

यह फ़ंक्शन वास्तविक चाल प्रतीत होता है:

Date.prototype.getUTCUnixTime =  function (){
  return Math.floor( new Date(
    this.getUTCFullYear(),
    this.getUTCMonth(),
    this.getUTCDate(),
    this.getUTCHours(),
    this.getUTCMinutes(), 
    this.getUTCSeconds()
  ).getTime() / 1000); 
}

ध्यान दें कि यह "इस" पर काम करता है इसका मतलब है कि मैं यह कर सकता हूं:

var n = new Date(2008,10,10)
...
...

n.getUTCUnixTime();

और यूनिक्स के समय में 1 जनवरी 1970 से सेकंड की संख्या प्राप्त करें। सही?

यह मेरे लिए थोड़ा पागल है, कि जावास्क्रिप्ट यूटीसी समय में सब कुछ स्टोर करता है, लेकिन फिर उस नंबर को प्राप्त करने के लिए मुझे व्यक्तिगत यूटीसी गेटर्स पास करने के लिए एक नई तिथि ऑब्जेक्ट बनाना होगा और फिर अंत में गेटटाइम () के लिए कॉल करना होगा ...

मर्क।


1
क्या आपने उनके जवाब के लिए @ DCoder का अपडेट देखा? आपकी विधि getUTCUnixTimeको गलत समय मिलता है, और जावास्क्रिप्ट एक वस्तु से यूनिक्स टाइमस्टैम्प प्राप्त करने के लिए एक सरल तरीका प्रदान करता हैDate - getTimeविधि का उपयोग करके । अन्य सभी उत्तर देखें।
अनुराग

1
उह आप सही हैं, बस उन्हें देखा। (दीवार के खिलाफ सिर
मारना

1

मुझे लगता है कि यह आप उम्मीद कर रहे हैं ...

var currTimestamp = Date.now(), //1482905176396
    utcDateString = (new Date(currTimestamp)).toUTCString(); //"Wed, 28 Dec 2016 06:06:50 GMT"

अभी,

new Date(utcDateString).getTime(); //This will give you UTC Timestamp in JavaScript

0

एक बार जब आप ऐसा करते हैं

new Date(dateString).getTime() / 1000

यह पहले से ही यूटीसी टाइम स्टांप है

   const getUnixTimeUtc = (dateString = new Date()) => Math.round(new Date(dateString).getTime() / 1000)

मैंने https://www.unixtimestamp.com/index.php पर परीक्षण किया


0

दिन का उपयोग करना। js

ब्राउजर में:

dayjs.extend(dayjs_plugin_utc)
console.log(dayjs.utc().unix())
<script src="https://cdn.jsdelivr.net/npm/dayjs@latest/dayjs.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/dayjs@latest/plugin/utc.js"></script>

नोड्स में:

import dayjs from 'dayjs'
dayjs.extend(require('dayjs/plugin/utc'))
console.log(dayjs.utc().unix())

आपको मिलीसेकंड के बिना एक यूटीसी यूनिक्स टाइमस्टैम्प मिलता है।


-2

यह UTC में टाइमस्टैम्प लौटाएगा:

var utc = new Date(new Date().toUTCString()).getTime();


2
यह यूटीसी में समय नहीं लौटाता है: new Date(new Date().toUTCString())बुध अक्टूबर 04 2017 07:20:14 GMT + 0200 (GMT + 02: 00) देता है
बस वैन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.