आपको जावास्क्रिप्ट में टाइमस्टैम्प कैसे मिलेगा?


4012

मैं जावास्क्रिप्ट में टाइमस्टैम्प कैसे प्राप्त कर सकता हूं?

यूनिक्स टाइमस्टैम्प के समान कुछ , जो कि एक एकल संख्या है जो वर्तमान समय और तारीख का प्रतिनिधित्व करती है। या तो एक संख्या या एक स्ट्रिंग के रूप में।


जेएस में 64 बिट टाइमस्टैम्प कैसे प्राप्त करें?
अलेक्जेंडर मिल्स

@AlexanderMills चूंकि जावास्क्रिप्ट 64 बिट पूर्णांक का समर्थन नहीं करता है, इसलिए आपको दो 32-बिट पूर्णांक प्राप्त करने होंगे। एक और सवाल पूछें।
wizzwizz4

जवाबों:


4908

लघु और Snazzy:

+ new Date()

की तरह एक एकल ऑपरेटर plusचलाता valueOfमें विधि Dateवस्तु है और यह टाइमस्टैम्प रिटर्न (किसी भी परिवर्तन के बिना)।

विवरण:

लगभग सभी वर्तमान ब्राउज़रों पर आप मिलीसेकंडDate.now() में यूटीसी टाइमस्टैम्प प्राप्त करने के लिए उपयोग कर सकते हैं ; इस के लिए एक उल्लेखनीय अपवाद IE8 और पहले ( संगतता तालिका देखें ) है।

आप आसानी से इस के लिए एक शिम बना सकते हैं, हालांकि:

if (!Date.now) {
    Date.now = function() { return new Date().getTime(); }
}

सेकंड में टाइमस्टैम्प प्राप्त करने के लिए , आप इसका उपयोग कर सकते हैं:

Math.floor(Date.now() / 1000)

या वैकल्पिक रूप से आप उपयोग कर सकते हैं:

Date.now() / 1000 | 0

जो थोड़ा तेज होना चाहिए, लेकिन कम पठनीय ( यह उत्तर भी देखें )।

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

new Date().getTime()

जिसे आप इस तरह सेकंड में बदल सकते हैं:

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

और आप उस valueOfविधि का भी उपयोग कर सकते हैं जो हमने ऊपर दिखाया था:

new Date().valueOf()

मिलीसेकंड में टाइमस्टैम्प

var timeStampInMs = window.performance && window.performance.now && window.performance.timing && window.performance.timing.navigationStart ? window.performance.now() + window.performance.timing.navigationStart : Date.now();

console.log(timeStampInMs, Date.now());


11
एक और उल्लेखनीय अपवाद नोड.जेएस है। मैं Google से नोड
मिलान बाब्यूकोव

57
वर्ष 2038 की समस्याDate.now() / 1000 | 0 से ग्रस्त नहीं होंगे ? new Date('Jan 1, 2039') / 1000 | 0 == -2117514496
गेंगकेव

3
या भी, w / o का उपयोग कर Math.floor ..~~(Date.now() / 1000)
Matej

14
@ मिलनबुआकोव लेकिन नोड.जेएस समर्थन करता हैDate.now()
ऑरेंजडॉग

51
जबकि +new Dataचतुर, यह अन्य देवों द्वारा पठनीय नहीं है। Date.now()स्पष्ट है और यह सुनिश्चित करता है कि हर कोई जानता है कि क्या हो रहा है।
हैरी सैडलर

513

मुझे यह पसंद है, क्योंकि यह छोटा है:

+new Date

मुझे यह भी पसंद है, क्योंकि यह सिर्फ छोटा है और आधुनिक ब्राउज़रों के साथ संगत है, और 500 से अधिक लोगों ने मतदान किया कि यह बेहतर है:

Date.now()

636
यह विकल्प एक बुरा विचार है। यह आसानी से अनदेखा हो जाता है, एक टाइपो की तरह दिखता है, और वास्तव में एक भाषा के साइड-इफ़ेक्ट पर निर्भर होता है। मुझे बुरा कोड दिखाई देता है।
इननट्सहेलस

10
@ बिली जैसा कि मैं इसे याद करता हूं, मैंने प्रत्येक सुझाए गए समाधान 1M बार में टाइमस्टैम्प की गणना की, और औसत रनटाइम की गणना की। मैंने इसे फ़ायरफ़ॉक्स और क्रोम में चलाया, दोनों ब्राउज़र में गेटटाइम तेज़ था। उस ने कहा, भले ही यह (थोड़ा) मैं धीमी चुनता था new Date().getTime()। मेरे लिए सौभाग्य से, तेजी से समाधान पहले से ही सुपाठ्य समाधान है!
इननटशेलस जूल

11
@ FabrícioMatté के साथ सहमत हुए। अनुपयोगी ऑपरेटर का व्यवहार अल्पविकसित नहीं हो सकता है, लेकिन यदि आपने इस पर ब्रश नहीं किया है, तो बहुत सारी टीमों में प्रभावी रूप से कार्य करने में सक्षम होने की उम्मीद न करें।
जेसन टी फेदरिंगम

9
@Niklaus ऐसा इसलिए है क्योंकि आप इसे किसी अन्य स्ट्रिंग के लिए संक्षिप्त कर रहे हैं। उस मामले में, new Date().toString()कहा जाता है।
kirb

7
जिज्ञासा से बाहर +ऑपरेटर इसे स्ट्रिंग की तरह बनाने के लिए क्या कर रहा है?
zadubz

275

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

यह आपको एक यूनिक्स टाइमस्टैम्प (सेकंड में) देगा:

var unix = Math.round(+new Date()/1000);

यह आपको युग के बाद मिलीसेकंड देगा (यूनिक्स टाइमस्टैम्प नहीं):

var milliseconds = new Date().getTime();

4
PHP को मिलीसेकंड के साथ ठीक काम करना चाहिए, क्योंकि यह उन्हें माइक्रोटाइम () फ़ंक्शन के साथ उपयोग करता है।
निको बर्न्स

5
जबकि माइक्रोटाइम () मौजूद है, php में अधिकांश समय संबंधित कार्य सेकंड में होने की अपेक्षा करते हैं और मिलीसेकंड में नहीं। क्या अधिक है कि माइक्रोटाइम () एक फ्लोट देता है (यदि आप सच पास करते हैं) जहां दशमलव का हिस्सा एक सेकंड (माइक्रोसेकंड के बराबर) का अंश होता है, जबकि newDate ()। GetTime () एक इंट रिटर्न देता है जहां यह केवल मिलीसेकंड की गणना करता है। युग। उदाहरण के लिए (php) यदि आप फ्लोर (माइक्रोटाइम (ट्रू)) को कॉल करते हैं तो यह प्रभावी रूप से कॉलिंग टाइम () के समान होगा जो सेकंड में है और माइक्रो या मिलीसेकंड नहीं है। ऊपर से 1000 तक विभाजित करना इसका सबसे आसान समाधान है।
gregghz

49
गोल के बजाय, फर्श का उपयोग करें। 700 एमएस अभी भी पूरे नहीं है
Anagmate

Unix timestampबनाम Seconds since the Epoch। क्या इन दोनों का मतलब एक ही बात नहीं है?
मुडियागा एजेंवी

147
var time = Date.now || function() {
  return +new Date;
};

time();

6
क्यों || ऑपरेटर? क्या Date.now () सभी ब्राउज़रों पर उपलब्ध नहीं है?
क्रिस नू

67
Date.now () जावास्क्रिप्ट 1.5 से है, और IE 8 पर समर्थित नहीं है।
Søren Løvborg

9
जिन इंजनों को Date.now विधि का समर्थन करने के लिए अद्यतन नहीं किया गया है, वे निम्नलिखित शिम का उपयोग करके इसके अभाव में काम कर सकते हैं: if (! Date.now) {Date.now = function now () {return + (new Date); }; }
प्रति क्वेस्ट Aronsson

या(Date.now||function(){return +new Date})();

130

मैं इस उत्तर में वर्णन के साथ कई समाधान प्रदान करता हूं। कुछ भी स्पष्ट नहीं होने पर बेझिझक सवाल पूछें
PS: दुख की बात है कि किसी ने इसे क्रेडिट दिए बिना शीर्ष उत्तर में मिला दिया।


त्वरित और गंदा समाधान:

Date.now() /1000 |0

चेतावनी : यदि आप जादू करते हैं तो यह 2038 में टूट सकता है और नकारात्मक संख्या लौटा सकता है |0Math.floor()उस समय के बजाय उपयोग करें

Math.floor() समाधान:

Math.floor(Date.now() /1000);

डेरेक द्वारा Some 功夫 के कुछ वैकल्पिक विकल्प इस उत्तर के नीचे टिप्पणियों से लिए गए हैं:

new Date/1e3|0

पॉलीफ़िल Date.now()काम करने के लिए :

IE में इसे काम करने के लिए आप ऐसा कर सकते हैं (एमडीएन से पॉलिफ़िल ):

if (!Date.now) {
    Date.now = function now() {
        return new Date().getTime();
    };
}

यदि आप वर्ष / दिन के दिन / दिन के उजाले की बचत के समय की परवाह नहीं करते हैं, तो आप इसे दूर कर सकते हैं और 2038 के बाद इसका उपयोग कर सकते हैं:

var now = (function () {
    var year = new Date(new Date().getFullYear().toString()).getTime();
    return function () {
        return Date.now() - year
    }
})();

कैसा लगेगा इसका कुछ आउटपुट:

new Date()
Thu Oct 29 2015 08:46:30 GMT+0100 (Mitteleuropäische Zeit )
new Date(now())
Thu Oct 29 1970 09:46:30 GMT+0100 (Mitteleuropäische Zeit )

निश्चित रूप से यह दिन के समय की बचत के समय को तोड़ देगा लेकिन आप जो निर्माण कर रहे हैं उसके आधार पर यह आपके लिए उपयोगी हो सकता है यदि 2038 में int32 टूटने के बाद आपको टाइमस्टैम्प पर द्विआधारी संचालन करने की आवश्यकता होगी।

यह नकारात्मक मान भी लौटाएगा लेकिन केवल तभी यदि आप जिस पीसी पर अपना कोड चला रहे हैं, उस उपयोगकर्ता ने अपने पीसी की घड़ी को पिछले वर्ष के कम से कम 31 वें दिन में बदल दिया है।


यदि आप उस बिंदु से सापेक्ष समय जानना चाहते हैं जब कोड पहले चलाया गया था तो आप कुछ इस तरह का उपयोग कर सकते हैं:

var relativeTime = (function () {
    var start = Date.now();
    return function () {
        return Date.now() - start
    }
})();

यदि आप jQuery का उपयोग कर रहे हैं तो आप jQuery के डॉक्स$.now() में वर्णित उपयोग कर सकते हैं जो पॉलीफ़िल को अप्रचलित बनाता है क्योंकि आंतरिक रूप से वही काम करता है:$.now()(new Date).getTime()

यदि आप सिर्फ jQuery के संस्करण के बारे में खुश हैं, तो इस उत्तर पर विचार करें क्योंकि मैंने इसे स्वयं नहीं पाया था।


अब क्या |0करता है की एक छोटी व्याख्या :

प्रदान करके |, आप दुभाषिया को बाइनरी या ऑपरेशन करने के लिए कहते हैं। बिट संचालन के लिए निरपेक्ष संख्या की आवश्यकता होती है जो दशमलव परिणाम को Date.now() / 1000पूर्णांक में बदल देता है ।

उस रूपांतरण के दौरान, दशमलव को हटा दिया जाता है, जिसके परिणामस्वरूप Math.floor()कम कोड का उपयोग करते हुए उपयोग किया जाता है।

हालांकि सावधान रहें: यह 64 बिट डबल को 32 बिट पूर्णांक में परिवर्तित कर देगा। इससे भारी संख्या से निपटने पर सूचना का नुकसान होगा। 32 बिट पूर्णांक अतिप्रवाह के कारण 2038 के बाद टाइमस्टैम्प टूट जाएगा।


Date.nowइस लिंक का पालन करने के बारे में अधिक जानकारी के लिए : Date.now()@ MDN


12
| 0, Math.floor () के समान है क्योंकि यह एक बिट ऑपरेशन है (जो फ्लोट्स के साथ काम नहीं करता है)। मैथ.फ्लोअर () की तुलना में सामान्य रूप से तेज़ है क्योंकि यह एक फ़ंक्शन कॉल नहीं है, यह एक देशी जावास्क्रिप्ट ऑपरेटर है।
गोट्ज़


@Christophe आपको ऐसा क्यों लगता है? IE के कारण ठीक? सिवाय इसके कि यह बहुत सरल और अनुकूलन योग्य है।
गॉटज

5
पॉलीफिल / शिम जटिल नहीं हैं। वे 9 विभिन्न ब्राउज़र संस्करणों का समर्थन करने और उन मानकों को चुनने का निर्णय लेने वाले उद्योग का एक परिणाम हैं जो वे अपनाते हैं और जो वे अभी बनाते हैं।
23

8
संदर्भ के लिए सबसे अधिक कॉम्पैक्ट आप प्राप्त कर सकते हैं new Date/1e3|0
डेरेक 會 會 ere


61

jQuery टाइमस्टैम्प प्राप्त करने के लिए अपनी स्वयं की विधि प्रदान करता है :

var timestamp = $.now();

(इसके अलावा यह सिर्फ (new Date).getTime()अभिव्यक्ति को लागू करता है)

REF: http://api.jquery.com/jQuery.now/


2
jQuery अलग जावास्क्रिप्ट एपीआई के साथ किसी भी क्रॉस-ब्राउज़र संगतता मुद्दों का भी ध्यान रखेगा।
हेनरी हेलेन

4
@VisioN मैंने Node.js. में टाइमस्टैम्प करने का एक तरीका खोजा मुझे स्टैकओवरफ़्लो में एक जावास्क्रिप्ट प्रश्न मिला और मुझे jQuery में एक उत्तर मिला, जो मदद नहीं करता है। जावास्क्रिप्ट और jQuery दो चीजें हैं। यदि हम हर जावास्क्रिप्ट फ्रेमवर्क का उत्तर देते हैं, तो हम संभवतः उत्तर की अनंत संख्या के साथ समाप्त हो जाते हैं, जो स्टैकओवरफ्लो में क्यू / ए के दर्शन के खिलाफ है। इसके अलावा: i.stack.imgur.com/Ledgt.gif : D
पियरे अरलाउड

5
@VisioN किसने कहा कि जावास्क्रिप्ट को एक ब्राउज़र में उपयोग करने की आवश्यकता है?
पियरे अरलाउड

5
@PierreArlaud और किसने कहा कि यह सवाल केवल NodeJS के बारे में है?
VisioN

2
@KingRider की कोई आवश्यकता नहीं है parseInt, क्योंकि परिणामी मूल्य हमेशा एक होगा Number
VisioN

46

console.log(new Date().valueOf()); // returns the number of milliseconds since the epoch


4
यह बराबर है +new Date.. :)
19h

8
बस करोDate.now()
ऑरलैंडो

@ ऑरलैंडो अन्य उत्तरों को देखें, अब के साथ समस्या () ब्राउज़र समर्थन है
क्रिस्टोफ़

@ शिरोस्तोपे बस एक साधारण पॉलीफिल करें, developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
ऑरलैंडो

4
@ ऑरलैंडो वास्तव में, Date.now ()
क्रिस्टोफ़

43

अन्य विकल्पों के अलावा, यदि आप एक तारीख के अनुरूप आईएसओ चाहते हैं, तो आप इसे सीधे प्राप्त कर सकते हैं

console.log(new Date().toISOString());


यह उस प्रश्न के साथ पूर्णांक नहीं लौटाता है जिसके लिए प्रश्न पूछा जाता है!
एलेक्सवेंटुरायो

@AlexVentura एक स्ट्रिंग डेटफ़ॉर्मट आईएसओ के साथ आप किसी दिनांक ऑब्जेक्ट को त्वरित कर सकते हैं और उनके बीच घटा सकते हैं। उदाहरण के लिए:new Date("2017-05-04T07:11:28.940Z") - new Date("2017-05-04T07:11:14.092Z")
जोआकिन्गलेज़ैंटोस

41

बस जोड़ने के लिए, यहाँ जावास्क्रिप्ट में टाइमस्टैम्प स्ट्रिंग वापस करने के लिए एक फ़ंक्शन है। उदाहरण: 15:06:38 अपराह्न

function displayTime() {
    var str = "";

    var currentTime = new Date()
    var hours = currentTime.getHours()
    var minutes = currentTime.getMinutes()
    var seconds = currentTime.getSeconds()

    if (minutes < 10) {
        minutes = "0" + minutes
    }
    if (seconds < 10) {
        seconds = "0" + seconds
    }
    str += hours + ":" + minutes + ":" + seconds + " ";
    if(hours > 11){
        str += "PM"
    } else {
        str += "AM"
    }
    return str;
}

11
ओपी एक पूर्णांक टाइमस्टैम्प के बारे में पूछ रहा है; यह उस समय का एक स्ट्रिंग प्रतिनिधित्व है।
ब्रैड कोच

3
"यूनिक्स के टाइमस्टैम्प के समान है, जो कि एक एकल संख्या है जो वर्तमान समय का प्रतिनिधित्व करती है"
ब्रैड कोच

मेरे पास समय प्रदर्शित करने के लिए एक कोड था लेकिन ऑस्ट्रेलिया के कुछ हिस्सों ने पूरी तारीख दिखाई, इस स्क्रिप्ट ने मुझे इसे तोड़ने और सही प्रदर्शित करने में मदद की। (उस के लिए +1)
सेफर

40

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

बस जावास्क्रिप्ट में सावधान रहें टाइमस्टैम्प क्लाइंट कंप्यूटर सेट पर निर्भर करता है, इसलिए यह 100% सटीक टाइमस्टैम्प नहीं है। सबसे अच्छा परिणाम प्राप्त करने के लिए, आपको सर्वर-साइड से टाइमस्टैम्प प्राप्त करने की आवश्यकता है ।

वैसे भी, मेरा पसंदीदा तरीका वेनिला का उपयोग कर रहा है। यह जावास्क्रिप्ट में करने का एक सामान्य तरीका है:

Date.now(); //return 1495255666921

MDN में इसका उल्लेख नीचे दिया गया है:

Date.now () विधि 1 जनवरी 1970 00:00:00 UTC के बाद से मिली हुई संख्या की संख्या देता है।
क्योंकि अब () Date की एक स्थिर विधि है, आप इसे हमेशा Date.now () के रूप में उपयोग करते हैं।

यदि आप ES5 के नीचे संस्करण का उपयोग कर रहे हैं, Date.now();तो काम नहीं करता है और आपको उपयोग करने की आवश्यकता है:

new Date().getTime();

29

एक जिसे मैंने अभी तक नहीं देखा है

Math.floor(Date.now() / 1000); // current time in seconds

एक और जिसे मैंने अभी तक नहीं देखा है

var _ = require('lodash'); // from here https://lodash.com/docs#now
_.now();

1
Date.now() /1000 |0वही करता है और इससे पहले उत्तर दिया गया है
GottZ

3
कुंआ। मुझे यकीन है कि Math.floor()इसे संपादित किया गया है, लेकिन केवल यह स्पष्ट करने के लिए कि इसका उतना ही प्रभाव है |0। मैं तुम्हें या कुछ भी दुख नहीं देना चाहता था। मैं आपको केवल यह बताना चाहता था कि आपका जवाब किसी तरह से पहले से मौजूद है। दिए गए सभी उत्तरों को देखकर किसी तरह से नोटिस फ्लोर पर कुछ हैं।
गॉटज

मुझे लगता है कि सिर्फ इस्तेमाल करने के लिए पूरी लोदश लाइब्रेरी को आयात करना _.now()थोड़ा सा ओवरकिल है। मैं केवल लोधश कार्यक्षमता को आयात करने की सलाह दूंगा जिसे आपको उपयोग करने की आवश्यकता है (इस मामले में _.now () एनपीएम पर ), लेकिन यहां तक ​​कि उन्होंने अपने पैकेज को सिर्फ उपयोग करने के पक्ष में चित्रित किया हैDate.now()
15th पर mgthomas99

27

इस Date.getTime()विधि को थोड़ा ट्वीक के साथ प्रयोग किया जा सकता है:

गेटटाइम विधि द्वारा लौटाया गया मान 1 जनवरी 1970 00:00:00 UTC के बाद से मिलीसेकंड की संख्या है।

floorयदि आवश्यक हो तो यूनिक्स टाइमस्टैम्प प्राप्त करने के लिए परिणाम को 1000 से विभाजित करें :

(new Date).getTime() / 1000

Date.valueOf()विधि कार्यात्मक के बराबर है Date.getTime(), जो बनाता है यह संभव तारीख वस्तु पर अंकगणितीय ऑपरेटर का उपयोग करने के समान परिणाम प्राप्त करने के। मेरी राय में, यह दृष्टिकोण पठनीयता को प्रभावित करता है।


7
: आप कोष्ठकों की जरूरत नहीं हैnew Date().getTime() / 1000
Ry-

14
आपको उनकी आवश्यकता नहीं है, लेकिन वे कोड को अधिक पठनीय (IMHO) बनाते हैं। मुझे लगता है कि स्वाद का पदार्थ।
जॉन्डोडो

आप के ()बाद की जरूरत भी नहीं है new Dateऔर के .getTime()बाद से /एक नंबर में तिथि वस्तु वैसे भी डाली जाएगी।
डेरेक 會 會 ere

25

कोड Math.floor(new Date().getTime() / 1000)को छोटा किया जा सकता है new Date / 1E3 | 0

प्रत्यक्ष getTime()आह्वान को छोड़ने और फ़ंक्शन के | 0प्रतिस्थापन के रूप में उपयोग करने पर विचार करें Math.floor()। यह याद रखना भी अच्छा है कि 1E3एक छोटे के बराबर है 1000(अपरकेस ई 1E3को एक स्थिर के रूप में इंगित करने के लिए लोअरकेस की तुलना में पसंद किया जाता है)।

परिणामस्वरूप आपको निम्नलिखित मिलते हैं:

var ts = new Date / 1E3 | 0;

console.log(ts);


3
@ डडस्ट "Math.floor(new Date().getTime()/1000)".length == 37; "new Date/1E3|0".length == 14; 37 -14 = 23 बाइट्स;
वैलेन्टिन पॉडकामेनेई

@ मैथ्यूचेर्बोर्नियर क्या वास्तव में अपठनीय है? डिवीजन साइन, 1 ई 3, पाइप या शून्य? कृपया मेरे उत्तर में कोड स्निपेट देखें।
वैलेंटाइन पोडकामेनी

1
@ वेलेंटिन आप लगभग कोई लाभ के लिए सरल कोड को छोटा / जटिल कर रहे हैं। मुझे ऐसा करने की बात नहीं दिख रही है। हम कोड गोल्फ पर नहीं हैं!
मैथ्यू चारबोनियर

@ मैथ्यूचेहार्बोर्नियर, कुछ भी जटिल नहीं है, बस बुनियादी सिंटैक्स और ऑपरेटर हैं। मुख्य बिंदु लघु, स्पष्ट और समझने योग्य कोड लिखना है।
वैलेंटाइन पॉडकामेनी

2
@Valentin मुझे स्पष्ट करने दें की जगह Math.floor()द्वारा |0इस कोड को "स्पष्ट और समझने" कर रही है। मुझे समझाएं कि किस स्थान पर 1 बाइट को बचाकर रखना 1000है 1E3। यह मज़ाकीय है। मुझे बुरा कोड दिखाई देता है।
मैथ्यू चारबोनियर

24

प्रदर्शन

आज - 2020.04.23 मैं चुने हुए समाधानों के लिए परीक्षण करता हूं। मैंने क्रोम 81.0, सफारी 13.1, फ़ायरफ़ॉक्स 75.0 पर मैको हाई सिएरा 10.13.6 पर परीक्षण किया

निष्कर्ष

  • सॉल्यूशन Date.now()(ई) क्रोम और सफारी पर सबसे तेज़ है और फ़ायरफ़ॉक्स पर दूसरा उपवास है और यह तेज़ क्रॉस-ब्राउज़र समाधान के लिए शायद सबसे अच्छा विकल्प है
  • समाधान performance.now()(G), जो आश्चर्यजनक है, फ़ायरफ़ॉक्स पर अन्य समाधानों की तुलना में 100 गुना अधिक तेज है लेकिन क्रोम पर सबसे धीमा है
  • सॉल्यूशन C, D, F सभी ब्राउजर पर काफी स्लो हैं

यहां छवि विवरण दर्ज करें

विवरण

क्रोम के लिए परिणाम

यहां छवि विवरण दर्ज करें

आप यहां अपनी मशीन पर परीक्षण कर सकते हैं

परीक्षणों में उपयोग किए गए कोड को स्निपेट के नीचे प्रस्तुत किया गया है


यदि आप परीक्षण करते हैं तो मुझे इसमें रुचि होगी performance.now()क्योंकि यह स्टाम्प के संदर्भ में सबसे सटीक माना जाता है।
सैमसन .ब्रावे

@SamsonTheBrave आपकी टिप्पणी के लिए धन्यवाद - मैं जवाब अद्यतन
कामिल Kiełczewski

बहुत बढ़िया, आपके अपडेट के लिए धन्यवाद! मैंने देखा कि आप फ़ायरफ़ॉक्स पर अब प्रदर्शन में अंतर देख रहे थे। यह फ़ायरफ़ॉक्स का एक परिणाम हो सकता है privacy.reduceTimerPrecisionजो परिणामों को निकटतम मिलीसेकंड के लिए गोल करता है। यह डिफ़ॉल्ट रूप से भी सक्षम है लेकिन अक्षम किया जा सकता है। developer.mozilla.org/en-US/docs/Web/API/Performance/now
SamsonTheBrave

22

मैं अत्यधिक उपयोग करने की सलाह देता हूं moment.js। UNIX युग के बाद से मिलीसेकंड की संख्या प्राप्त करने के लिए, करें

moment().valueOf()

UNIX युग के बाद से सेकंड की संख्या प्राप्त करने के लिए, करें

moment().unix()

आप भी इस तरह समय बदल सकते हैं:

moment('2015-07-12 14:59:23', 'YYYY-MM-DD HH:mm:ss').valueOf()

मेरे पास हर व़क्त करने को यही काम है। मजाक नहीं।

moment.jsब्राउज़र में उपयोग करने के लिए :

<script src="moment.js"></script>
<script>
    moment().valueOf();
</script>

मोमेंटजे को स्थापित करने और उपयोग करने के अन्य तरीकों सहित अधिक जानकारी के लिए, उनके डॉक्स देखें


21

माइक्रोसेकंड संकल्प के साथ टाइमस्टैम्प के लिए, वहाँ है performance.now:

function time() { 
  return performance.now() + performance.timing.navigationStart;
}

यह उदाहरण उपज के लिए दे सकता है 1436140826653.139, जबकि Date.nowकेवल देता है 1436140826653


21

आप केवल उपयोग कर सकते हैं

    var timestamp = new Date().getTime();
    console.log(timestamp);

वर्तमान टाइमस्टैम्प प्राप्त करने के लिए। कुछ भी अतिरिक्त करने की आवश्यकता नहीं है।


20

यहाँ प्रारूप में टाइमस्टैम्प उत्पन्न करने का एक सरल कार्य है: mm / dd / yy hh: mi: ss

function getTimeStamp() {
    var now = new Date();
    return ((now.getMonth() + 1) + '/' +
            (now.getDate()) + '/' +
             now.getFullYear() + " " +
             now.getHours() + ':' +
             ((now.getMinutes() < 10)
                 ? ("0" + now.getMinutes())
                 : (now.getMinutes())) + ':' +
             ((now.getSeconds() < 10)
                 ? ("0" + now.getSeconds())
                 : (now.getSeconds())));
}

10
@ b123400 - यहाँ लिस्प संस्करण है (new (chain (-date) (to-i-s-o-string))):।
इनामाथी

20

// The Current Unix Timestamp
// 1443534720 seconds since Jan 01 1970. (UTC)

// seconds
console.log(Math.floor(new Date().valueOf() / 1000)); // 1443534720
console.log(Math.floor(Date.now() / 1000)); // 1443534720
console.log(Math.floor(new Date().getTime() / 1000)); // 1443534720

// milliseconds
console.log(Math.floor(new Date().valueOf())); // 1443534720087
console.log(Math.floor(Date.now())); // 1443534720087
console.log(Math.floor(new Date().getTime())); // 1443534720087

// jQuery
// seconds
console.log(Math.floor($.now() / 1000)); // 1443534720
// milliseconds
console.log($.now()); // 1443534720087
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


16

किसी भी ब्राउज़र ने Date.now का समर्थन नहीं किया है, आप इसका उपयोग वर्तमान तिथि समय प्राप्त करने के लिए कर सकते हैं:

currentTime = Date.now() || +new Date()

3
(मेरी टिप्पणी को पुनःप्रकाशित करते हुए) आपके कोड में एक समस्या है: यह पहले अपने समर्थन की जाँच करने के बजाय Date.now विधि को कार्यान्वित करता है। पुराने ब्राउज़रों पर यह Date.now एक फ़ंक्शन त्रुटि नहीं होगी ।
सलमान ए

शायद एक बेहतर विकल्प यह होगा कि Date.nowवास्तव में मौजूद है (और यह एक समारोह है), यह आह्वान करने से पहले यह दावा करने के लिए एक टर्नरी ऑपरेटर का उपयोग करना होगा currentTime = typeof Date.now === "function" ? Date.now() : +new Date():।
14th:54 पर mgthomas99

14

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

var a = new Date(UNIX_timestamp*1000);
var hour = a.getUTCHours();
var min = a.getUTCMinutes();
var sec = a.getUTCSeconds();

14

मैंने दूसरे दिन JQuery कुकी के स्रोत कोड से यूनिक्स टाइमस्टैम्प को दिए गए डेट ऑब्जेक्ट को परिवर्तित करने का वास्तव में अच्छा तरीका सीखा ।

यहाँ एक उदाहरण है:

var date = new Date();
var timestamp = +date;

मैं नई तिथि () ऑब्जेक्ट लिखने वाला था। आप लॉग (नई तिथि ()) को सांत्वना दे सकते हैं और फिर नई तिथि () ऑब्जेक्ट / फ़ंक्शन के तहत संबंधित विधियों के माध्यम से स्किम कर सकते हैं
sg28

14

यदि Node.js में टाइमस्टैम्प उत्पन्न करने के लिए एक मूल तरीका चाहिए तो यह अच्छी तरह से काम करता है।

var time = process.hrtime();
var timestamp = Math.round( time[ 0 ] * 1e3 + time[ 1 ] / 1e6 );

हमारी टीम स्थानीय ठिकाने के माहौल में कैश को नष्ट करने के लिए इसका उपयोग कर रही है। आउटपुट वह है /dist/css/global.css?v=245521377जहां 245521377टाइमस्टैम्प उत्पन्न होता है hrtime()

उम्मीद है कि इससे मदद मिलती है, ऊपर दिए गए तरीके भी काम कर सकते हैं लेकिन मैंने इसे Node.js. में अपनी आवश्यकताओं के लिए सबसे सरल तरीका पाया।


13

यह काम करने लगता है।

console.log(clock.now);
// returns 1444356078076

console.log(clock.format(clock.now));
//returns 10/8/2015 21:02:16

console.log(clock.format(clock.now + clock.add(10, 'minutes'))); 
//returns 10/8/2015 21:08:18

var clock = {
    now:Date.now(),
    add:function (qty, units) {
            switch(units.toLowerCase()) {
                case 'weeks'   :  val = qty * 1000 * 60 * 60 * 24 * 7;  break;
                case 'days'    :  val = qty * 1000 * 60 * 60 * 24;  break;
                case 'hours'   :  val = qty * 1000 * 60 * 60;  break;
                case 'minutes' :  val = qty * 1000 * 60;  break;
                case 'seconds' :  val = qty * 1000;  break;
                default       :  val = undefined;  break;
                }
            return val;
            },
    format:function (timestamp){
            var date = new Date(timestamp);
            var year = date.getFullYear();
            var month = date.getMonth() + 1;
            var day = date.getDate();
            var hours = date.getHours();
            var minutes = "0" + date.getMinutes();
            var seconds = "0" + date.getSeconds();
            // Will display time in xx/xx/xxxx 00:00:00 format
            return formattedTime = month + '/' + 
                                day + '/' + 
                                year + ' ' + 
                                hours + ':' + 
                                minutes.substr(-2) + 
                                ':' + seconds.substr(-2);
            }
};

13

यदि यह लॉगिंग उद्देश्यों के लिए है, तो आप ISOString का उपयोग कर सकते हैं

new Date().toISOString()

"2019-05-18T20: 02: 36.694Z"



10

मोमेंट्स.जेएस जावास्क्रिप्ट डेट्स से निपटने में बहुत दर्द को दूर कर सकते हैं।

देखें: http://momentjs.com/docs/#/displaying/unix-timestamp/

moment().unix();

2
ध्यान दें कि यह UNIX युग के बाद से सेकंड की संख्या (मिलीसेकंड नहीं) देता है। यदि आप मिलीसेकंड चाहते हैं, तो उपयोग करें moment().valueOf()। मेरा जवाब देखिए।
फुलस्टैक

9

इसे लिखते समय, शीर्ष उत्तर 9 वर्ष का है, और तब से बहुत कुछ बदल गया है - कम से कम, हमारे पास एक गैर-हैकी समाधान के लिए सार्वभौमिक समर्थन है:

Date.now()

यदि आप पूरी तरह से निश्चित होना चाहते हैं कि यह कुछ प्राचीन (पूर्व यानी 9) ब्राउज़र में नहीं टूटेगा, तो आप इसे एक चेक के पीछे रख सकते हैं, जैसे:

const currentTimestamp = (!Date.now ? +new Date() : Date.now());

यह समय के बाद से मिलीसेकंड लौटाएगा, निश्चित रूप से, सेकंड नहीं।

Date.now पर MDN प्रलेखन


8

अधिक सरल तरीका:

var timeStamp=event.timestamp || new Date().getTime();

पता है कहां से eventआता है। आपको उत्तर लिखने के बजाय अपने हल करने के तरीके की बेहतर व्याख्या करने की आवश्यकता है। कृप्या!
अलेवेंटुरायो

मैं नई तिथि () ऑब्जेक्ट लिखने वाला था। आप लॉग (नई तिथि ()) को सांत्वना दे सकते हैं और फिर नई तिथि () ऑब्जेक्ट / फ़ंक्शन के तहत संबंधित विधियों के माध्यम से स्किम कर सकते हैं
sg28
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.