मैं जावास्क्रिप्ट में टाइमस्टैम्प कैसे प्राप्त कर सकता हूं?
यूनिक्स टाइमस्टैम्प के समान कुछ , जो कि एक एकल संख्या है जो वर्तमान समय और तारीख का प्रतिनिधित्व करती है। या तो एक संख्या या एक स्ट्रिंग के रूप में।
मैं जावास्क्रिप्ट में टाइमस्टैम्प कैसे प्राप्त कर सकता हूं?
यूनिक्स टाइमस्टैम्प के समान कुछ , जो कि एक एकल संख्या है जो वर्तमान समय और तारीख का प्रतिनिधित्व करती है। या तो एक संख्या या एक स्ट्रिंग के रूप में।
जवाबों:
+ 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());
Date.now() / 1000 | 0
से ग्रस्त नहीं होंगे ? new Date('Jan 1, 2039') / 1000 | 0 == -2117514496
~~(Date.now() / 1000)
Date.now()
+new Data
चतुर, यह अन्य देवों द्वारा पठनीय नहीं है। Date.now()
स्पष्ट है और यह सुनिश्चित करता है कि हर कोई जानता है कि क्या हो रहा है।
मुझे यह पसंद है, क्योंकि यह छोटा है:
+new Date
मुझे यह भी पसंद है, क्योंकि यह सिर्फ छोटा है और आधुनिक ब्राउज़रों के साथ संगत है, और 500 से अधिक लोगों ने मतदान किया कि यह बेहतर है:
Date.now()
new Date().getTime()
। मेरे लिए सौभाग्य से, तेजी से समाधान पहले से ही सुपाठ्य समाधान है!
new Date().toString()
कहा जाता है।
+
ऑपरेटर इसे स्ट्रिंग की तरह बनाने के लिए क्या कर रहा है?
जावास्क्रिप्ट युग के बाद से मिलीसेकंड की संख्या के साथ काम करता है जबकि अधिकांश अन्य भाषाएं सेकंड के साथ काम करती हैं। आप मिलीसेकंड के साथ काम कर सकते हैं लेकिन जैसे ही आप PHP कहने के लिए एक मान पास करते हैं, PHP के मूल कार्य संभवतः विफल हो जाएंगे। इसलिए यह सुनिश्चित करने के लिए कि मैं हमेशा सेकंड का उपयोग करता हूं, मिलीसेकंड का नहीं।
यह आपको एक यूनिक्स टाइमस्टैम्प (सेकंड में) देगा:
var unix = Math.round(+new Date()/1000);
यह आपको युग के बाद मिलीसेकंड देगा (यूनिक्स टाइमस्टैम्प नहीं):
var milliseconds = new Date().getTime();
Unix timestamp
बनाम Seconds since the Epoch
। क्या इन दोनों का मतलब एक ही बात नहीं है?
var time = Date.now || function() {
return +new Date;
};
time();
मैं इस उत्तर में वर्णन के साथ कई समाधान प्रदान करता हूं। कुछ भी स्पष्ट नहीं होने पर बेझिझक सवाल पूछें
PS: दुख की बात है कि किसी ने इसे क्रेडिट दिए बिना शीर्ष उत्तर में मिला दिया।
त्वरित और गंदा समाधान:
Date.now() /1000 |0
चेतावनी : यदि आप जादू करते हैं तो यह 2038 में टूट सकता है और नकारात्मक संख्या लौटा सकता है
|0
।Math.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
Date.now()
संदर्भ: developer.mozilla.org/en-US/docs/JavaScript/Reference/…
new Date/1e3|0
।
jQuery टाइमस्टैम्प प्राप्त करने के लिए अपनी स्वयं की विधि प्रदान करता है :
var timestamp = $.now();
(इसके अलावा यह सिर्फ (new Date).getTime()
अभिव्यक्ति को लागू करता है)
parseInt
, क्योंकि परिणामी मूल्य हमेशा एक होगा Number
।
console.log(new Date().valueOf()); // returns the number of milliseconds since the epoch
+new Date
.. :)
Date.now()
अन्य विकल्पों के अलावा, यदि आप एक तारीख के अनुरूप आईएसओ चाहते हैं, तो आप इसे सीधे प्राप्त कर सकते हैं
console.log(new Date().toISOString());
new Date("2017-05-04T07:11:28.940Z") - new Date("2017-05-04T07:11:14.092Z")
बस जोड़ने के लिए, यहाँ जावास्क्रिप्ट में टाइमस्टैम्प स्ट्रिंग वापस करने के लिए एक फ़ंक्शन है। उदाहरण: 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;
}
दिनांक , जावास्क्रिप्ट में एक मूल वस्तु वह तरीका है जिससे हमें समय के बारे में सभी आंकड़े मिलते हैं।
बस जावास्क्रिप्ट में सावधान रहें टाइमस्टैम्प क्लाइंट कंप्यूटर सेट पर निर्भर करता है, इसलिए यह 100% सटीक टाइमस्टैम्प नहीं है। सबसे अच्छा परिणाम प्राप्त करने के लिए, आपको सर्वर-साइड से टाइमस्टैम्प प्राप्त करने की आवश्यकता है ।
वैसे भी, मेरा पसंदीदा तरीका वेनिला का उपयोग कर रहा है। यह जावास्क्रिप्ट में करने का एक सामान्य तरीका है:
Date.now(); //return 1495255666921
MDN में इसका उल्लेख नीचे दिया गया है:
Date.now () विधि 1 जनवरी 1970 00:00:00 UTC के बाद से मिली हुई संख्या की संख्या देता है।
क्योंकि अब () Date की एक स्थिर विधि है, आप इसे हमेशा Date.now () के रूप में उपयोग करते हैं।
यदि आप ES5 के नीचे संस्करण का उपयोग कर रहे हैं, Date.now();
तो काम नहीं करता है और आपको उपयोग करने की आवश्यकता है:
new Date().getTime();
एक जिसे मैंने अभी तक नहीं देखा है
Math.floor(Date.now() / 1000); // current time in seconds
एक और जिसे मैंने अभी तक नहीं देखा है
var _ = require('lodash'); // from here https://lodash.com/docs#now
_.now();
Date.now() /1000 |0
वही करता है और इससे पहले उत्तर दिया गया है
Math.floor()
इसे संपादित किया गया है, लेकिन केवल यह स्पष्ट करने के लिए कि इसका उतना ही प्रभाव है |0
। मैं तुम्हें या कुछ भी दुख नहीं देना चाहता था। मैं आपको केवल यह बताना चाहता था कि आपका जवाब किसी तरह से पहले से मौजूद है। दिए गए सभी उत्तरों को देखकर किसी तरह से नोटिस फ्लोर पर कुछ हैं।
_.now()
थोड़ा सा ओवरकिल है। मैं केवल लोधश कार्यक्षमता को आयात करने की सलाह दूंगा जिसे आपको उपयोग करने की आवश्यकता है (इस मामले में _.now () एनपीएम पर ), लेकिन यहां तक कि उन्होंने अपने पैकेज को सिर्फ उपयोग करने के पक्ष में चित्रित किया हैDate.now()
।
इस Date.getTime()
विधि को थोड़ा ट्वीक के साथ प्रयोग किया जा सकता है:
गेटटाइम विधि द्वारा लौटाया गया मान 1 जनवरी 1970 00:00:00 UTC के बाद से मिलीसेकंड की संख्या है।
floor
यदि आवश्यक हो तो यूनिक्स टाइमस्टैम्प प्राप्त करने के लिए परिणाम को 1000 से विभाजित करें :
(new Date).getTime() / 1000
Date.valueOf()
विधि कार्यात्मक के बराबर है Date.getTime()
, जो बनाता है यह संभव तारीख वस्तु पर अंकगणितीय ऑपरेटर का उपयोग करने के समान परिणाम प्राप्त करने के। मेरी राय में, यह दृष्टिकोण पठनीयता को प्रभावित करता है।
new Date().getTime() / 1000
()
बाद की जरूरत भी नहीं है new Date
और के .getTime()
बाद से /
एक नंबर में तिथि वस्तु वैसे भी डाली जाएगी।
कोड 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);
"Math.floor(new Date().getTime()/1000)".length == 37;
"new Date/1E3|0".length == 14;
37 -14 = 23 बाइट्स;
Math.floor()
द्वारा |0
इस कोड को "स्पष्ट और समझने" कर रही है। मुझे समझाएं कि किस स्थान पर 1 बाइट को बचाकर रखना 1000
है 1E3
। यह मज़ाकीय है। मुझे बुरा कोड दिखाई देता है।
आज - 2020.04.23 मैं चुने हुए समाधानों के लिए परीक्षण करता हूं। मैंने क्रोम 81.0, सफारी 13.1, फ़ायरफ़ॉक्स 75.0 पर मैको हाई सिएरा 10.13.6 पर परीक्षण किया
Date.now()
(ई) क्रोम और सफारी पर सबसे तेज़ है और फ़ायरफ़ॉक्स पर दूसरा उपवास है और यह तेज़ क्रॉस-ब्राउज़र समाधान के लिए शायद सबसे अच्छा विकल्प हैperformance.now()
(G), जो आश्चर्यजनक है, फ़ायरफ़ॉक्स पर अन्य समाधानों की तुलना में 100 गुना अधिक तेज है लेकिन क्रोम पर सबसे धीमा हैक्रोम के लिए परिणाम
आप यहां अपनी मशीन पर परीक्षण कर सकते हैं
परीक्षणों में उपयोग किए गए कोड को स्निपेट के नीचे प्रस्तुत किया गया है
performance.now()
क्योंकि यह स्टाम्प के संदर्भ में सबसे सटीक माना जाता है।
privacy.reduceTimerPrecision
जो परिणामों को निकटतम मिलीसेकंड के लिए गोल करता है। यह डिफ़ॉल्ट रूप से भी सक्षम है लेकिन अक्षम किया जा सकता है। developer.mozilla.org/en-US/docs/Web/API/Performance/now
मैं अत्यधिक उपयोग करने की सलाह देता हूं 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>
मोमेंटजे को स्थापित करने और उपयोग करने के अन्य तरीकों सहित अधिक जानकारी के लिए, उनके डॉक्स देखें
माइक्रोसेकंड संकल्प के साथ टाइमस्टैम्प के लिए, वहाँ है performance.now
:
function time() {
return performance.now() + performance.timing.navigationStart;
}
यह उदाहरण उपज के लिए दे सकता है 1436140826653.139
, जबकि Date.now
केवल देता है 1436140826653
।
आप केवल उपयोग कर सकते हैं
var timestamp = new Date().getTime();
console.log(timestamp);
वर्तमान टाइमस्टैम्प प्राप्त करने के लिए। कुछ भी अतिरिक्त करने की आवश्यकता नहीं है।
यहाँ प्रारूप में टाइमस्टैम्प उत्पन्न करने का एक सरल कार्य है: 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())));
}
(new (chain (-date) (to-i-s-o-string)))
:।
// 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>
किसी भी ब्राउज़र ने Date.now का समर्थन नहीं किया है, आप इसका उपयोग वर्तमान तिथि समय प्राप्त करने के लिए कर सकते हैं:
currentTime = Date.now() || +new Date()
Date.now
वास्तव में मौजूद है (और यह एक समारोह है), यह आह्वान करने से पहले यह दावा करने के लिए एक टर्नरी ऑपरेटर का उपयोग करना होगा currentTime = typeof Date.now === "function" ? Date.now() : +new Date()
:।
इसका एक हल है: जो यूनिसेक्स स्टैम्प को टिम में बदल देता है
var a = new Date(UNIX_timestamp*1000);
var hour = a.getUTCHours();
var min = a.getUTCMinutes();
var sec = a.getUTCSeconds();
मैंने दूसरे दिन JQuery कुकी के स्रोत कोड से यूनिक्स टाइमस्टैम्प को दिए गए डेट ऑब्जेक्ट को परिवर्तित करने का वास्तव में अच्छा तरीका सीखा ।
यहाँ एक उदाहरण है:
var date = new Date();
var timestamp = +date;
यदि 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. में अपनी आवश्यकताओं के लिए सबसे सरल तरीका पाया।
यह काम करने लगता है।
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);
}
};
मोमेंट्स.जेएस जावास्क्रिप्ट डेट्स से निपटने में बहुत दर्द को दूर कर सकते हैं।
देखें: http://momentjs.com/docs/#/displaying/unix-timestamp/
moment().unix();
moment().valueOf()
। मेरा जवाब देखिए।
इसे लिखते समय, शीर्ष उत्तर 9 वर्ष का है, और तब से बहुत कुछ बदल गया है - कम से कम, हमारे पास एक गैर-हैकी समाधान के लिए सार्वभौमिक समर्थन है:
Date.now()
यदि आप पूरी तरह से निश्चित होना चाहते हैं कि यह कुछ प्राचीन (पूर्व यानी 9) ब्राउज़र में नहीं टूटेगा, तो आप इसे एक चेक के पीछे रख सकते हैं, जैसे:
const currentTimestamp = (!Date.now ? +new Date() : Date.now());
यह समय के बाद से मिलीसेकंड लौटाएगा, निश्चित रूप से, सेकंड नहीं।
अधिक सरल तरीका:
var timeStamp=event.timestamp || new Date().getTime();
event
आता है। आपको उत्तर लिखने के बजाय अपने हल करने के तरीके की बेहतर व्याख्या करने की आवश्यकता है। कृप्या!