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


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

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


3367
2017-10-21 09:29


मूल


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


जवाब:


लघु और स्नैज़ी:

+ new Date()

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

विवरण:

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

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

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());


4159
2017-10-21 09:32



एक और उल्लेखनीय अपवाद node.js. है मैं Google से यहां नोड में ऐसा करने के लिए देख रहा था - Milan Babuškov
नहीं होगा Date.now() / 1000 | 0 से पीड़ित वर्ष 2038 समस्या? new Date('Jan 1, 2039') / 1000 | 0 == -2117514496 - gengkev
या यहां तक ​​कि, w / o Math.floor का उपयोग कर .. ~~(Date.now() / 1000) - code ninja
@ MilanBabuškov लेकिन node.js समर्थन करता है Date.now() - OrangeDog
जबकि +new Data चालाक है, यह अन्य देवताओं द्वारा पठनीय नहीं है। Date.now() स्पष्ट है और यह सुनिश्चित करता है कि हर कोई जानता है कि क्या हो रहा है। - Harry Sadler


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

+new Date

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

Date.now()

432
2018-02-18 00:33



यह विकल्प एक बुरा विचार है। इसे आसानी से अनदेखा किया जाता है, एक टाइपो की तरह दिखता है, और वास्तव में एक भाषा दुष्प्रभाव पर भरोसा करता है। मुझे बुरा कोड दिखाई देता है। - inanutshellus
@ बिली जैसा कि मुझे याद है, मैंने दो सुझाए गए समाधानों में टाइमस्टैम्प की गणना 1 एम बार प्रत्येक की है, और औसत रनटाइम की गणना की है। मैंने इसे फ़ायरफ़ॉक्स और क्रोम में चलाया, जिसमें दोनों ब्राउज़र में गेटटाइम तेजी से चल रहा था। उस ने कहा, भले ही यह धीमा (मामूली) धीमा हो, मैं चुनूंगा new Date().getTime()। सौभाग्य से मेरे लिए, तेजी से समाधान पहले से ही सुगम समाधान है! - inanutshellus
@ FabrícioMatté से सहमत यूनरी ऑपरेटर व्यवहार प्राथमिक नहीं हो सकता है, लेकिन यदि आपने इस पर ब्रश नहीं किया है, तो कई टीमों में प्रभावी रूप से कार्य करने में सक्षम होने की अपेक्षा न करें। - Jason T Featheringham
@ निकलॉस ऐसा इसलिए है क्योंकि आप इसे किसी अन्य स्ट्रिंग से जोड़ रहे हैं। उस स्तिथि में, new Date().toString() कहा जाता है। - kirb
जिज्ञासा से बाहर क्या है +ऑपरेटर इसे एक स्ट्रिंग की तरह बाहर करने के लिए कर रहा है? - Grundizer


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

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

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

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

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

230
2018-05-11 22:27



PHP को मिलीसेकंड के साथ ठीक काम करना चाहिए, क्योंकि यह microtime () फ़ंक्शन के साथ स्वयं का उपयोग करता है। - Nico Burns
जबकि microtime () मौजूद है, php में अधिकांश समय से जुड़े कार्यों की अपेक्षा है कि टाइमस्टैम्प सेकंड में हो और मिलीसेकंड न हो। और भी यह है कि माइक्रोटाइम () एक फ्लोट लौटाता है (यदि आप सच हो जाते हैं) जहां दशमलव भाग एक सेकंड (माइक्रोसॉन्ड के लिए सटीक) के अंश होते हैं, जबकि newDate ()। GetTime () एक int देता है जहां यह केवल मिलीसेकंड की गणना करता है युग उदाहरण के लिए (php) यदि आप फर्श को कॉल करना चाहते थे (microtime (true)) यह प्रभावी रूप से समय () को कॉल करने जैसा ही होगा, जो सेकंड में है और माइक्रो या मिलीसेकंड नहीं है। उपर्युक्त 1000 द्वारा विभाजित करना इसका सबसे आसान समाधान है। - gregghz
गोल के बजाय, फर्श का उपयोग करें। 700 एमएस अभी भी पूरा नहीं है - Anagmate


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

time();

126
2017-10-21 10:05



क्यों || ऑपरेटर? क्या तारीख है .now () सभी ब्राउज़रों पर उपलब्ध नहीं है? - Chris Noe
जाहिर है, मुझे मॉड्यूलज में कोड मिला - Staale
Date.now () जावास्क्रिप्ट 1.5 से है, और आईई 8 पर समर्थित नहीं है। - Søren Løvborg
इंजन जो दिनांक .now विधि का समर्थन करने के लिए अद्यतन नहीं किए गए हैं, निम्नलिखित शिम का उपयोग करके इसकी अनुपस्थिति के आसपास काम कर सकते हैं: यदि (! Date.now) {Date.now = function अब () {वापसी + (नई तिथि); }; } - Per Quested Aronsson
आईई कुल कैंसर है। - SkuraZZ


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


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

Date.now() /1000 |0

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


95
2017-07-12 07:15



| 0 Math.floor () के समान है क्योंकि यह थोड़ा सा ऑपरेशन है (जो फ्लोट के साथ काम नहीं करता है)। सामान्य रूप से Math.floor () से भी तेज़ है क्योंकि यह फ़ंक्शन कॉल नहीं है, यह मूल जावास्क्रिप्ट ऑपरेटर है। - GottZ
Date.now() संदर्भ: developer.mozilla.org/en-US/docs/JavaScript/Reference/... - Web_Designer
@ क्रिस्टोफ़े आपको ऐसा क्यों लगता है? आईई फिक्स के कारण? उस भाग को छोड़कर मुझे लगता है कि यह बहुत सरल और अनुकूलन है। - GottZ
पॉलीफिल / शिम जटिल नहीं हैं। वे 9 अलग-अलग ब्राउज़र संस्करणों का समर्थन करने और उद्योग को चुनने का निर्णय ले रहे हैं कि वे कौन से मानकों को अपनाते हैं और जो वे अभी बनाते हैं। - rlemon
संदर्भ के लिए आप प्राप्त कर सकते हैं सबसे कॉम्पैक्ट है new Date/1e3|0। - Derek 朕會功夫


var timestamp = Number(new Date()); // current time as number

69
2017-10-21 13:00





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

var timestamp = $.now();

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

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


50
2018-03-15 14:19



jQuery विभिन्न जावास्क्रिप्ट एपीआई के साथ किसी भी क्रॉस-ब्राउज़र संगतता समस्याओं का भी ख्याल रखेगा। - Henry Heleine
@VisioN मैंने Node.js. में टाइमस्टैम्प करने का एक तरीका ढूंढ लिया। मुझे स्टैक ओवरफ्लो में जावास्क्रिप्ट प्रश्न मिला और मुझे jQuery में एक जवाब मिला, जो मदद नहीं करता है। जावास्क्रिप्ट और jQuery दो चीजें हैं। यदि हम वहां मौजूद प्रत्येक जावास्क्रिप्ट ढांचे के उत्तर देते हैं, तो हम संभावित रूप से असीमित संख्या के उत्तरों के साथ समाप्त होते हैं, जो स्टैक ओवरफ्लो में क्यू / ए के दर्शन के खिलाफ है। इसके अलावा: i.stack.imgur.com/Ledgt.gif : डी - Pierre Arlaud
@PierreArlaud आप किस तरह के दर्शन के बारे में बात कर रहे हैं? jQuery एक विश्व एनआर है। शुद्ध जावास्क्रिप्ट में लिखी गई 1 लाइब्रेरी, जिसका मुख्य लक्ष्य क्रॉस ब्राउज़र उपयोगिता विधियों को प्रदान करना है। जैसा कि आप उत्तर से देख सकते हैं, jQuery का उपयोग करता है (new Date).getTime() दृष्टिकोण, इसलिए आईई 6 में भी इसका उपयोग करने के लिए पर्याप्त सुरक्षित है, इसके विपरीत, कहें, Date.now()। अन्यथा, यदि आप एक वेबसाइट विकसित कर रहे हैं और jQuery का उपयोग क्यों करते हैं तो एक संक्षिप्त उपयोगी समाधान का उपयोग न करें $.now() अपना समय कम करने और शुद्ध जेएस में सार्वभौमिक कोड की तलाश करने के बजाए। और यह कम से कम यहां दिए गए अन्य सामग्री उत्तरों के लिए अलग है। - VisioN
@VisioN किसने जावास्क्रिप्ट को ब्राउज़र में इस्तेमाल करने की आवश्यकता है? - Pierre Arlaud
@PierreArlaud और किसने कहा कि यह सवाल केवल नोडजेएस के बारे में है? - VisioN


बस जोड़ने के लिए, जावास्क्रिप्ट में टाइमस्टैम्प स्ट्रिंग को वापस करने के लिए यहां एक फ़ंक्शन है। उदाहरण: 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;
}

36
2017-09-21 19:12



ओपी एक पूर्णांक टाइमस्टैम्प के बारे में पूछ रहा है; यह समय का एक स्ट्रिंग प्रतिनिधित्व है। - Brad Koch
"यूनिक्स के टाइमस्टैम्प के समान, यानी, एक ही संख्या जो वर्तमान समय का प्रतिनिधित्व करती है" - Brad Koch
मेरे पास समय प्रदर्शित करने के लिए एक कोड था लेकिन ऑस्ट्रेलिया के कुछ हिस्सों ने पूरी तारीख दिखायी, इस लिपि ने मुझे इसे तोड़ने और सही प्रदर्शन करने में मदद की। (उस के लिए +1) - Syfer


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


34
2018-04-30 16:53



यह बराबर है +new Date.. :) - Kenan Sulayman
बस करो Date.now() - Orlando
@ ऑरलैंडो अन्य उत्तरों को देखें, अब के साथ समस्या () ब्राउज़र समर्थन है - Christophe
@ क्रिस्टोफ़े बस एक साधारण पॉलीफिल करें, developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/... - Orlando
@ ऑरलैंडो बिल्कुल, बस तारीख मत करो .now () - Christophe


अन्य विकल्पों के अतिरिक्त, यदि आप डेटफॉर्मैट आईएसओ चाहते हैं, तो आप इसे सीधे प्राप्त कर सकते हैं

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


29
2018-01-29 15:08



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


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

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

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

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

22
2018-03-31 08:18



Date.now() /1000 |0 वही करता है और पहले जवाब दिया गया है - GottZ
कुंआ। मुझे यकीन है कि संपादित किया गया Math.floor() इसमें लेकिन केवल यह स्पष्ट करने के लिए कि इसका वही प्रभाव है |0। मैं तुम्हें या कुछ भी चोट नहीं पहुँचना चाहता था। मैं बस आपको बताना चाहता था कि किसी तरह का आपका जवाब पहले से मौजूद है। सभी दिए गए उत्तरों को देखकर कुछ ऐसे हैं जो किसी भी तरह से नोटिस फर्श हैं। - GottZ
मुझे लगता है कि पूरी लॉडाश लाइब्रेरी को सिर्फ उपयोग करने के लिए आयात करना है _.now() थोड़ा सा ओवरकिल है। मैं केवल उस लोडैश कार्यक्षमता को आयात करने की अनुशंसा करता हूं जिसे आपको उपयोग करने की आवश्यकता है (इस मामले में, एनपीएम पर _.now ()), लेकिन यहां तक ​​कि उन्होंने अपने पैकेज को केवल उपयोग करने के पक्ष में हटा दिया है Date.now()। - mgthomas99