जावास्क्रिप्ट में मिलीसेकंड में आईएसओ तिथि बदलें


89

क्या मैं आईएसओ तिथि को मिलीसेकंड में परिवर्तित कर सकता हूं? उदाहरण के लिए मैं इस आईएसओ को रूपांतरित करना चाहता हूं

2012-02-10T13:19:11+0000

मिलीसेकंड के लिए।

क्योंकि मैं बनाई गई तारीख से वर्तमान तिथि की तुलना करना चाहता हूं। और बनाई गई तारीख एक आईएसओ तिथि है।


1
"मिलीसेकंड" का वास्तव में क्या मतलब है? मिलिसेकंड किस समय के सापेक्ष है? क्या आपका मतलब UNIX टाइमस्टैम्प है?
पेका

जैसे याहू एपी में, तिथि को मिलीसेकंड द्वारा दिखाया जाता है 1328796537, लेकिन एफबी एपी में, तिथि को आईएसओ में दिखाया गया है2012-02-10T13:18:45+0000
रॉबिन कार्लो कैटाकुटन


@mplungjan संबंधित, लेकिन सटीक नहीं। मैं दोनों समय के बीच अंतर प्राप्त करना चाहता हूं।
रॉबिन कार्लो कैटाकूटन

इसलिए लिंक का उपयोग करने के लिए उन्हें पहले तारीखों में अनुवाद करें और date1.getTime() - date2.getTime()यह करें - यह आपको केवल आवश्यक है
mplungjan

जवाबों:


151

इसे इस्तेमाल करे

var date = new Date("11/21/1987 16:00:00"); // some mock date
var milliseconds = date.getTime(); 
// This will return you the number of milliseconds
// elapsed from January 1, 1970 
// if your date is less than that date, the value will be negative

console.log(milliseconds);

संपादित करें

आपने एक आईएसओ तिथि प्रदान की है। इसे Dateवस्तु के निर्माता द्वारा भी स्वीकार किया जाता है

var myDate = new Date("2012-02-10T13:19:11+0000");
var result = myDate.getTime();
console.log(result);

संपादित करें

सबसे अच्छा मैंने पाया है कि मैन्युअल रूप से ऑफसेट से छुटकारा पाने के लिए।

var myDate = new Date("2012-02-10T13:19:11+0000");
var offset = myDate.getTimezoneOffset() * 60 * 1000;

var withOffset = myDate.getTime();
var withoutOffset = withOffset - offset;
console.log(withOffset);
console.log(withoutOffset);

काम करने लगता है। जहाँ तक आईएसओ स्ट्रिंग को Dateऑब्जेक्ट में परिवर्तित करने की समस्या है, आप दिए गए लिंक को संदर्भित कर सकते हैं।

संपादित करें

प्रसाद की टिप्पणी के अनुसार बग को मिलीसेकंड में गलत रूपांतरण के साथ तय किया गया।


हां, तिथि सभी ब्राउज़रों पर पार्स नहीं होगी। संबंधित प्रश्न पर मेरा जवाब देखें।
विक डेविड

और आप के नीचे जवाब पर मेरी टिप्पणी देखें;)
mplungjan

यह फ़ायरफ़ॉक्स में काम नहीं करता हैvar myDate = new Date("2012-02-10T13:19:11+0000");
mplungjan

1
@mplungjan आप इस दृष्टिकोण का उपयोग क्यों नहीं करते हैं ? मुझे पता है कि यह बोझिल है (वैसे भी))
ओयबेक

उह ... कि राजधानी "टी" में कर रही है? इसलिए यह @mplungjan काम नहीं करता है।
wle8300

28

पिछले समाधान का एक आशुलिपि है

var myDate = +new Date("2012-02-10T13:19:11+0000");

यह मक्खी प्रकार रूपांतरण पर और सीधे मिलीसेकंड प्रारूप में दिनांक आउटपुट करता है।

एक अन्य तरीका यह भी है कि आप केवल मिलीसेकंड में © समय आउटपुट का उपयोग करें।

var myDate = Date.parse("2012-02-10T13:19:11+0000");

आपके पास वहां थोड़ा टाइपो है, '+'
स्टुअर्ट सीगलर

@ स्टुअर्ट-सीगलर वास्तव में कोई टाइपो नहीं है, '+' मिलिसेकंड में दिनांक देता है।
लॉर्डट्रिब्युल नोव

@ लॉर्डट्रिब्युल "नया" मिलिसेकंड में तारीख देता है?
स्टुअर्ट सीगलर

1
@ स्टुअर्ट-सीगलर विशेष रूप से "+ नया" नहीं है, लेकिन "+" चाल करता है और एक आशुलिपि है, इसलिए यह कहना है। उदाहरण के लिए +new Date()रिटर्न 1447857230137जो कि मिलीसेकंड में समय है।
लॉर्डट्रिब्युल नोव

1
यह स्पष्ट रूप से एक जावास्क्रिप्ट संख्या ऑब्जेक्ट का स्पष्ट रूप से निर्माण करने के लिए स्पष्ट है: const dateMillis = Number(new Date('2017-09-26T20:24:18.801Z'))लेकिन new Date('2017-09-26T20:24:18.801Z').getTime()या new Date('2017-09-26T20:24:18.801Z').valueOf()अधिक पठनीय है।
डेविड जी

5

2017 के रूप में एक और विकल्प का उपयोग करना है Date.parse()। एमडीएन के दस्तावेज बताते हैं, हालांकि, यह ES5 से पहले अविश्वसनीय है।

var date = new Date(); // today's date and time in ISO format
var myDate = Date.parse(date);

देखें बेला अधिक जानकारी के लिए।


ECMAScript 2011 के बाद भी अंतर्निहित पार्सर अविश्वसनीय है । :-)
रोबजी

2

एक अन्य संभावित समाधान के साथ आज की तारीख तुलना करने के लिए है January 1, 1970, तो आप प्राप्त कर सकते हैं January 1, 1970द्वारा new Date(0);

var date = new Date(); 
var myDate= date - new Date(0);

2

हां, आप इसे एक ही लाइन में कर सकते हैं

let ms = Date.parse('2019-05-15 07:11:10.673Z');
console.log(ms);//1557904270673

इस फ़ंक्शन के विपरीत क्या है ?!
AG1

1

एक अन्य उपाय इस तरह संख्या वस्तु पार्सर का उपयोग किया जा सकता है:

let result = Number(new Date("2012-02-10T13:19:11+0000"));
let resultWithGetTime = (new Date("2012-02-10T13:19:11+0000")).getTime();
console.log(result);
console.log(resultWithGetTime);

जैसे मिलीसेकेंड के लिए यह धर्मान्तरित getTime()पर Dateवस्तु


0
var date = new Date()
console.log(" Date in MS last three digit = "+  date.getMilliseconds())
console.log(" MS = "+ Date.now())

इसके इस्तेमाल से हम मिलीसेकंड में तारीख पा सकते हैं



0

अगर आप यूटीसी की तारीख को मिलीसेकंड
सिंटैक्स में परिवर्तित करना चाहते हैं : Date.UTC (वर्ष, महीना, दिन; घंटे; मिनट; मिनट; सेकंड; मिलिशेक)।
जैसे:
date_in_mili = Date.UTC(2020, 07, 03, 03, 40, 40, 40);
console.log('miliseconds', date_in_mili);


0

मामले में अगर कोई आईएसओ तिथि से केवल समय हड़पना चाहता है , तो निम्नलिखित सहायक होगा। मैं उसे खोज रहा था और मुझे इसके लिए कोई सवाल नहीं मिल रहा था। तो कुछ मामलों में मददगार होगा।

let isoDate = '2020-09-28T15:27:15+05:30';
let result = isoDate.match(/\d\d:\d\d/);
console.log(result[0]);

इसोएट से आउटपुट केवल समय होगा जो है,

15:27
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.