डेट को टाइमस्टैम्प में कैसे बदलें?


165

मैं टाइमस्टैम्प करने के लिए तिथि परिवर्तित करना चाहते हैं, मेरे इनपुट है 26-02-2012। मैंनें इस्तेमाल किया

new Date(myDate).getTime();

इसे NaN कहते हैं .. क्या कोई बता सकता है कि इसे कैसे कन्वर्ट किया जाए?



आप date.js पुस्तकालय पर एक नज़र रखना चाहते हैं: datejs.com
rsbarro कर सकते हैं

1
क्या आपने Date(myDate).getTime()(जिसे आपने कोड के रूप में चिह्नित किया है) का उपयोग किया था, या इससे पहले "नया" शब्द कोड का हिस्सा होने का मतलब था? आप जितना अधिक प्रयास करेंगे, आपको उतने बेहतर उत्तर मिलेंगे।
टीजे क्राउडर

@rsbarro: सिवाय इसके कि इसका रखरखाव अब नहीं होता (और बकाया कीड़े हैं)। MomentJS काफी अच्छा लगता है, हालाँकि।
टीजे क्राउडर

@TJCrowder मैंने date.js का उपयोग किया है और इसके लिए जो मुझे इसकी आवश्यकता है उसके लिए काम किया है, लेकिन आप सही हैं कि इसे सक्रिय रूप से कुछ समय में काम नहीं किया गया है। मैं पल-पल की जांच करूंगा। धन्यवाद!
rsbarro

जवाबों:


203
var myDate = "26-02-2012";
myDate = myDate.split("-");
var newDate = myDate[1]+","+myDate[0]+","+myDate[2];
console.log(new Date(newDate).getTime());​

अपडेट करें:

var myDate = "26-02-2012";
myDate = myDate.split("-");
var newDate = myDate[1]+"/"+myDate[0]+"/"+myDate[2];
console.log(new Date(newDate).getTime());

DEMO (क्रोम, FF, ओपेरा, IE और सफारी में परीक्षण किया गया)।


दुर्भाग्य से, यह सफारी 5 में काम नहीं करता है, क्योंकि यह वापस लौटता है NaN। सफारी में आपको अन्य संभावित निर्माणकर्ता का उपयोग करना होगा new Date(year, month, day);, इस उदाहरण के बारे में:new Date(myDate[2], myDate[1], myDate[0]);
२१

13
दिनांक स्ट्रिंग को "यूरोपीय" से "अमेरिकन" प्रारूप में परिवर्तित करने के बजाय, इसे आईएसओ 8601 प्रारूप ( YYYY-MM-DD) में परिवर्तित करना बेहतर है , जिसे समझने की गारंटी है Date(), और आम तौर पर, तारीख के तार के लिए सबसे अधिक अंतर स्वरूप है।
वाल्टर ट्रॉस

3
नोट: new Date(newDate).getTime()मिलीसेकंड रिज़ॉल्यूशन में टाइमस्टैम्प का उत्पादन करेगा।
h7r

3
सेकंड के उपयोग के लिए: Math.floor(new Date(newDate).getTime() / 1000)
मेटामागिकम

54

इस फ़ंक्शन को आज़माएँ, यह Date.parse () विधि का उपयोग करता है और इसके लिए किसी कस्टम तर्क की आवश्यकता नहीं होती है:

function toTimestamp(strDate){
   var datum = Date.parse(strDate);
   return datum/1000;
}
alert(toTimestamp('02/13/2009 23:31:30'));


24

यह refactored कोड यह कर देगा

let toTimestamp = strDate => Date.parse(strDate)

यह सभी आधुनिक ब्राउज़रों पर काम करता है सिवाय ie8-


10

यहां पर दो समस्याएं हैं। सबसे पहले, आप केवल दिनांक के उदाहरण पर गेटटाइम कॉल कर सकते हैं। आपको नई तिथि को कोष्ठक में लपेटने की आवश्यकता है या इसे चर में निर्दिष्ट करना है।

दूसरा, आपको इसे एक उचित प्रारूप में एक स्ट्रिंग पास करने की आवश्यकता है।

काम करने का उदाहरण:

(new Date("2012-02-26")).getTime();

1
ब्रैकेट में तुरंत तारीख लपेटने की कोई आवश्यकता नहीं है। केवल एक उचित स्ट्रिंग प्रारूप की आवश्यकता है।
मासवर्द्धन

5

आपको अपनी तिथि अंक को उलटने और उसके -साथ बदलने की आवश्यकता है ,:

 new Date(2012,01,26).getTime(); // 02 becomes 01 because getMonth() method returns the month (from 0 to 11)

आपके मामले में:

 var myDate="26-02-2012";
 myDate=myDate.split("-");
 new Date(parseInt(myDate[2], 10), parseInt(myDate[1], 10) - 1 , parseInt(myDate[0]), 10).getTime();

पीएस यूके लोकल यहां कोई मायने नहीं रखता।


वह दिनांक स्वरूप भी अमान्य है, और मज़बूती से क्रॉस-ब्राउज़र और क्रॉस-लोकेल (यह, उदाहरण के लिए, यूके लोकेल के साथ क्रोम में) के लिए काम नहीं करेगा। यदि आप एक प्रारूप सुझाने जा रहे हैं, तो सुझाव दें कि वास्तव में काम करने के लिए प्रलेखित है।
TJ Crowder

मुझे developer.mozilla.org/en/JavaScript/Reference/Global_Objects/… से उदाहरण मिलता है । मैं सिर्फ तार लगाना भूल गया। अब यह काम कर रहा है।
एंटोनजस

2
ठीक है, कम से कम अब उपरोक्त कोड अमान्य दिनांक प्रारूप का उपयोग नहीं कर रहा है - यह सिर्फ दो अलग-अलग कारणों से गलत तारीख दे रहा है। ऊपर आपने दिनांक 2 मार्च, 2014 को परिभाषित किया है (आपके पास फ़ील्ड क्रम गड़बड़ है)। और यदि फ़ील्ड सही क्रम में थे, तो आप दिनांक 26 मार्च , 2012 (माह मान शून्य पर शुरू) को परिभाषित करेंगे । लेकिन जैसा कि ओपी के पास एक स्ट्रिंग है, संख्याओं की एक श्रृंखला नहीं है, यह सब उपयोगी नहीं है, भले ही आपने उन मुद्दों को संबोधित किया हो।
टीजे क्राउडर

@ टीजे क्राउडर आपके सुझाव के लिए धन्यवाद। जैसा कि आपने कहा कि स्ट्रिंग को एक संख्या में परिवर्तित करने के लिए मैंने कोड तय किया है। धन्यवाद।
एंटोनजस

2
पहला कोड उदाहरण अभी भी गलत है , और कुछ इंजनों पर समस्याग्रस्त के Numberसाथ शुरू होने वाले तारों का उपयोग करना 0- parseIntएक मूलांक का उपयोग और निर्दिष्ट करना है।
टीजे क्राउडर

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

4

यूनिक्स टाइमस्टैम्प में (आईएसओ) तारीख बदलने के लिए , मैंने टाइमस्टैम्प 3 पात्रों के साथ जरूरत से ज्यादा समय तक समाप्त किया, इसलिए मेरा वर्ष कहीं 50k था ...

मुझे इसे 1000 से विभाजित करना था: new Date('2012-02-26').getTime() / 1000


3

उन लोगों के लिए जो प्रारूप में पठनीय टाइमस्टैम्प रखना चाहते हैं, yyyymmddHHMMSS

> (new Date()).toISOString().replace(/[^\d]/g,'')              // "20190220044724404"
> (new Date()).toISOString().replace(/[^\d]/g,'').slice(0, -3) // "20190220044724"
> (new Date()).toISOString().replace(/[^\d]/g,'').slice(0, -9) // "20190220"

उपयोग उदाहरण: एक बैकअप फ़ाइल एक्सटेंशन। /my/path/my.file.js.20190220


3

आप यहाँ वर्तमान टाइमस्टैम्प की तलाश में आए थे

  var date      = new Date();
  var timestamp = date.getTime();

TLDR:

new Date().getTime();
//console.log(new Date().getTime());

2

आपका स्ट्रिंग एक प्रारूप में नहीं है जिसे Dateऑब्जेक्ट को संभालने के लिए निर्दिष्ट किया गया है । आपको इसे स्वयं पार्स करना होगा, एक तिथि पार्सिंग लाइब्रेरी का उपयोग करें जैसे मोमेंटजेएस या पुराने (और वर्तमान में बनाए नहीं रखा गया है, जहां तक ​​मैं बता सकता हूं) डेटजेएस , या इसे पार्स करने 2012-02-29से पहले सही प्रारूप (जैसे ) में मालिश करें। Date

आप क्यों प्राप्त कर रहे हैं NaN: जब आप new Date(...)एक अमान्य स्ट्रिंग को संभालने के लिए कहते हैं , तो यह एक ऐसी Dateवस्तु लौटाता है जो अमान्य दिनांक ( new Date("29-02-2012").toString()रिटर्न "Invalid date") पर सेट होती है । getTime()इस स्थिति में दिनांक ऑब्जेक्ट पर कॉल करना रिटर्न देता है NaN


@ वनवूड्स: कूल, थैंक्स। हालाँकि मुझे यह टिप्पणी मिली "इसके अलावा, यह DOM के लिए गैर-विनाशकारी है" थोड़ा अजीब है ... मुझे उम्मीद है कि उनका मतलब यह था कि यह Dateऑब्जेक्ट को नहीं बदलता है (जिसका DOM से कोई लेना देना नहीं है)।
TJ क्राउडर

2
/**
 * Date to timestamp
 * @param  string template
 * @param  string date
 * @return string
 * @example         datetotime("d-m-Y", "26-02-2012") return 1330207200000
 */
function datetotime(template, date){
    date = date.split( template[1] );
    template = template.split( template[1] );
    date = date[ template.indexOf('m') ]
        + "/" + date[ template.indexOf('d') ]
        + "/" + date[ template.indexOf('Y') ];

    return (new Date(date).getTime());
}

0

उत्तर अन्य डेवलपर्स द्वारा प्रदान किए गए हैं, लेकिन मेरे अपने तरीके से, आप बिना किसी उपयोगकर्ता परिभाषित फ़ंक्शन के निर्माण के बिना फ्लाई पर ऐसा कर सकते हैं:

var timestamp = Date.parse("26-02-2012".split('-').reverse().join('-'));
alert(timestamp); // returns 1330214400000
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.