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




date datetime (24)

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

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


कभी-कभी मुझे xmlhttp कॉल के लिए ऑब्जेक्ट्स में इसकी आवश्यकता होती है, इसलिए मुझे यह पसंद है।

timestamp : parseInt(new Date().getTime()/1000, 10)

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

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

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

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

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

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

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

moment().valueOf()

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

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>

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


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

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

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

Date.now(); //return 1495255666921

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

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

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

new Date().getTime();

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

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

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


// 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>


आज - 2018.06.27 मैं शुद्ध जेएस समाधान के लिए कुछ समय तुलना प्रदान करता हूं। यह उन लोगों के लिए उपयोगी हो सकता है जो जेएस में हल्के / कुशल तरीके से समय प्राप्त / मापने के लिए चाहते हैं (उदाहरण के लिए, रीयल-टाइम अनुप्रयोगों जैसे सिमुलेशन, गेम्स इत्यादि)

क्रोम 67.0.3396.99 (64-बिट), सफारी 11.0.3 (13604.5.6), फ़ायरफ़ॉक्स 59.0.2 (64-बिट) पर मैकोज़ उच्च सिएरा 10.13.3 पर परीक्षण किया गया। नीचे स्क्रीनशॉट पर मैं आपको सबसे तेज़ ब्राउज़र (सफारी) के परिणाम दिखाता हूं:

जैसा कि मैंने Date.now() देखा है Date.now() सभी तीन ब्राउज़रों के लिए टाइमस्टैम्प प्राप्त करने का सबसे तेज़ तरीका था। सफारी में प्रति सेकंड 19.2 एम ऑपरेशंस हैं, फ़ायरफ़ॉक्स 16.1 एम, क्रोम 7.8 एम।

क्रोम (2.8 एम) और फ़ायरफ़ॉक्स (2.6 एम) के लिए new Date()*1 सबसे धीमी थी। Number(new Date()) सफारी (2.9 एम) के लिए सबसे धीमी थी।

तो विजेता जेएस कोड Date.now() और सबसे तेज़ ब्राउज़र सफारी (2x तेज है कि क्रोम!)।

आप यहां अपनी मशीन पर परीक्षण कर सकते हैं: https://jsperf.com/timestamp-test-x


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

ऐसा लगता है कि काम करता है।

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

Date.getTime() विधि का उपयोग थोड़ा tweak के साथ किया जा सकता है:

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

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

(new Date).getTime() / 1000

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


प्रारूप में टाइमस्टैम्प उत्पन्न करने के लिए यहां एक सरल कार्य है: मिमी / डीडी / वाई एचएच: मील: एसएस

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 Date

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

Date.now()

अधिक आसान तरीका:

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

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

lodash और underscore उपयोगकर्ताओं के लिए, _.now उपयोग _.now

var timestamp = _.now(); // in milliseconds

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

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

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

उम्मीद है कि इससे मदद मिलती है, उपर्युक्त विधियां भी काम कर सकती हैं लेकिन मुझे यह नोड.जे.एस. में हमारी ज़रूरतों के लिए सबसे आसान दृष्टिकोण माना जाता है।


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

time();

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

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

नतीजतन आप निम्नलिखित प्राप्त करते हैं:

var ts = new Date / 1E3 | 0;

console.log(ts);


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

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


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

+ new Date()

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

विवरण:

लगभग सभी मौजूदा ब्राउज़रों पर आप मिलीसेकंड में यूटीसी टाइमस्टैंप प्राप्त करने के लिए 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.now() का उपयोग करने की सलाह 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());


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

Date.now()

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

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

यह युग के समय से मिलीसेकंड वापस करेगा, बेशक, सेकंड नहीं।

MDN


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

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

Date.now() /1000 |0

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

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

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

इस जवाब के नीचे टिप्पणियों से लिया गया डेरेक 朕 會 功夫 द्वारा कुछ बेवकूफ विकल्प:

new Date/1e3|0

Polyfill Date.now() प्राप्त करने के लिए Date.now() काम कर रहा है:

आईई में काम करने के लिए आप यह कर सकते हैं (एमडीएन से MDN ):

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 में इंट 32 टूटने के बाद टाइमस्टैम्प पर बाइनरी ऑपरेशंस करने की ज़रूरत है।

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

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

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

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

यदि आप jQuery के संस्करण के बारे में बहुत खुश हैं तो this जवाब को ऊपर उठाने पर विचार this क्योंकि मुझे इसे स्वयं नहीं मिला।

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

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

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

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

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


इस में एक समाधान है: जो जेएस में समय के लिए अनियमित स्टाम्प को परिवर्तित करता है, इसे आजमाएं

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






unix-timestamp