जावास्क्रिप्ट - दो तिथियों के बीच मिनट पाएं


156

यदि मेरे पास दो तिथियां हैं, तो मैं दो मिनटों के बीच अंतर प्राप्त करने के लिए जावास्क्रिप्ट का उपयोग कैसे कर सकता हूं ?


क्या वे ऑब्जेक्ट्स या सिर्फ तार हैं? कृपया एक उदाहरण दे दें कि
सीटेटिनिन

जवाबों:


204

आप इस कोड की जांच कर सकते हैं:

var today = new Date();
var Christmas = new Date("2012-12-25");
var diffMs = (Christmas - today); // milliseconds between now & Christmas
var diffDays = Math.floor(diffMs / 86400000); // days
var diffHrs = Math.floor((diffMs % 86400000) / 3600000); // hours
var diffMins = Math.round(((diffMs % 86400000) % 3600000) / 60000); // minutes
alert(diffDays + " days, " + diffHrs + " hours, " + diffMins + " minutes until Christmas 2009 =)");

या var diffMins = Math.floor((...यदि आप राउंड मिनट नहीं करना चाहते हैं तो सेकंड को छोड़ दें।


7
@philk, यही कारण है कि मैं StackOverflow को इतना महत्व देता हूं। कई संदेश बोर्डों में, जवाब सिर्फ एक हाइपरलिंक है। अगर यह मामला यहां होता तो हमारे पास यह बेहतरीन जवाब नहीं होता।
एंड्रयू नीली

5
इस उत्तर का परीक्षण करते समय मुझे एक त्रुटि मिली: विचित्रता गलत हो सकती है यदि आप दिनांक ऑब्जेक्ट में मिनट सेट करते हैं। उदाहरण के लिए यदि क्रिसमस "12-25-2015 03:55" है और आज "12-25-2015 02:00" है तो प्रति घंटा दो घंटे है। एक घंटा होना चाहिए।
हॉफज

29
Math.round(((diffMs % 86400000) % 3600000) / 60000);अंतर 60 मिनट से अधिक होने पर काम नहीं कर रहा है
कुंसविक।

3
यह दोहराते हुए कि यह ठीक से काम नहीं करता है, कम से कम मिनटों के लिए। उदाहरण के लिए, इसमें 62 मिनट का अंतर था और गोलाई के कारण, यह 2 मिनट का अंतर था।
जॉर्डन

6
यह प्रश्न का सही उत्तर नहीं देता है, केवल मिनटों में अंतर की गणना करने के बजाय, यह अंतर दिन, घंटे और मिनटों के एक समग्र के रूप में गणना की जाती है ... इस प्रकार यदि अंतर 1 दिन 1 घंटा 1 मिनट है, तो यह 1 दिखाएगा दिन 1 घंटा 1 मिनट, 1501 मिनट के बजाय
अखिल गुप्ता

170

2 दिनांक वस्तुओं को घटाना आपको मिलीसेकंड में अंतर देता है, जैसे:

var diff = Math.abs(new Date('2011/10/09 12:00') - new Date('2011/10/09 00:00'));

Math.absनिरपेक्ष अंतर का उपयोग करने में सक्षम होने के लिए उपयोग किया जाता है (इसलिए new Date('2011/10/09 00:00') - new Date('2011/10/09 12:00')समान परिणाम देता है)।

परिणाम को 1000 से विभाजित करने पर आपको सेकंड की संख्या मिलती है। 60 से विभाजित करने पर आपको मिनटों की संख्या मिलती है। पूरे मिनट के लिए गोल, का उपयोग करें Math.floorया Math.ceil:

var minutes = Math.floor((diff/1000)/60);

इस उदाहरण में परिणाम 720 होगा


1
यिप। या ऐसा कुछ है (Math.floor(seconds/60))+':'+((seconds/60)%60)यदि आपको शेष सेकंड की भी आवश्यकता है
KooiInc

4
मुझे लगता है कि यह बेहतर उत्तर है, मैंने देखा कि स्वीकृत उत्तर अंतर को मिनट में बदलने में विफल रहता है जब अंतर 60 मिनट से अधिक है
शनि

यह भी गलत है। 12:00 00:00 के समान नहीं हो सकते हैं, क्योंकि ये 12 घंटे के अंतर हैं ...
Davatar

1
@ डावार्ट जो कहते हैं कि वे समान हैं? वह सिर्फ 12 घंटे - 0 घंटे, 0 घंटे - 12 घंटे के समान है।
मार्क बैजेंस

पुराना उत्तर, लेकिन आपको कभी new Date(string)भी ISO-8601 प्रारूप स्ट्रिंग के अलावा किसी प्रारूप का उपयोग नहीं करना चाहिए । देखें क्यों Date.parse गलत परिणाम देता है? , या बस संख्याओं का उपयोग करें (जैसे new Date(2011, 9, 9, 12, 0, 0); बस याद रखें महीने 0 आधारित हैं)।
मंकी

52
var startTime = new Date('2012/10/09 12:00'); 
var endTime = new Date('2013/10/09 12:00');
var difference = endTime.getTime() - startTime.getTime(); // This will give difference in milliseconds
var resultInMinutes = Math.round(difference / 60000);

2
यह अच्छा और सरल है और मेरे लिए काम किया है। मैंने तारीखों से .getTime () को हटा दिया था, क्योंकि यह मेरे लिए अधिक तर्कसंगत लग रहा था क्योंकि दो तिथियों की तुलना करना यह विचार है। धन्यवाद।
योस

पुराना उत्तर, लेकिन आपको कभी new Date(string)भी ISO-8601 प्रारूप स्ट्रिंग के अलावा किसी प्रारूप का उपयोग नहीं करना चाहिए । देखें क्यों Date.parse गलत परिणाम देता है? , या बस संख्याओं का उपयोग करें (जैसे new Date(2011, 9, 9, 12, 0, 0); बस याद रखें महीने 0 आधारित हैं)।
मंकी

46

इस गणना को करने के लिए एक सरल कार्य:

function getMinutesBetweenDates(startDate, endDate) {
    var diff = endDate.getTime() - startDate.getTime();
    return (diff / 60000);
}

24

कि दोनों तिथियों के बीच का अंतर मिनटों में दिखाना चाहिए। इसे अपने ब्राउज़र में आज़माएँ:

const currDate = new Date('Tue Feb 13 2018 13:04:58 GMT+0200 (EET)')
const oldDate  = new Date('Tue Feb 13 2018 12:00:58 GMT+0200 (EET)')


(currDate - oldDate) / 60000 // 64

4
टाइपस्क्रिप्ट आपको त्रुटि देगा "अंकगणित ऑपरेशन के बाएं-दाएं और दाएं हाथ की तरफ 'कोई', 'संख्या' या एक एनुम प्रकार का होना चाहिए"। त्रुटि से बचने के लिए(currDate.getTime() - oldDate.getTime()) / 60000
होमर

12

उन लोगों के लिए जो छोटी संख्या के साथ काम करना पसंद करते हैं

const today = new Date();
const endDate = new Date(startDate.setDate(startDate.getDate() + 7));
const days = parseInt((endDate - today) / (1000 * 60 * 60 * 24));
const hours = parseInt(Math.abs(endDate - today) / (1000 * 60 * 60) % 24);
const minutes = parseInt(Math.abs(endDate.getTime() - today.getTime()) / (1000 * 60) % 60);
const seconds = parseInt(Math.abs(endDate.getTime() - today.getTime()) / (1000) % 60); 

9

इस समस्या को पल के साथ आसानी से हल किया जाता है। उदाहरण के लिए, जैसे:

var difference = mostDate.diff(minorDate, "minutes");

दूसरा पैरामीटर दूसरे मापदंडों के लिए बदला जा सकता है, क्षण देखें। जेएस प्रलेखन।

उदाहरण: "दिन", "घंटे", "मिनट", आदि।

http://momentjs.com/docs/

क्षण के लिए CDN.js यहां उपलब्ध है:

https://cdnjs.com/libraries/moment.js

धन्यवाद।

संपादित करें:

mostDate और minorDate एक पल का प्रकार होना चाहिए।


2

यहाँ कुछ मजेदार है जो मैंने नोड में कुछ इसी तरह से हल किया था।

function formatTimeDiff(date1, date2) {
  return Array(3)
    .fill([3600, date1.getTime() - date2.getTime()])
    .map((v, i, a) => {
      a[i+1] = [a[i][0]/60, ((v[1] / (v[0] * 1000)) % 1) * (v[0] * 1000)];
      return `0${Math.floor(v[1] / (v[0] * 1000))}`.slice(-2);
    }).join(':');
}

const millis = 1000;
const utcEnd = new Date(1541424202 * millis);
const utcStart = new Date(1541389579 * millis);
const utcDiff = formatTimeDiff(utcEnd, utcStart);

console.log(`Dates:
  Start   : ${utcStart}
  Stop    : ${utcEnd}
  Elapsed : ${utcDiff}
  `);

/*
Outputs:

Dates:
  Start   : Mon Nov 05 2018 03:46:19 GMT+0000 (UTC)
  Stop    : Mon Nov 05 2018 13:23:22 GMT+0000 (UTC)
  Elapsed : 09:37:02
*/

आप इसे क्रिया में https://repl.it/@GioCirque/TimeSpan-Formatting पर देख सकते हैं


0

निम्नलिखित कोड ने मेरे लिए काम किया,

function timeDiffCalc(dateNow,dateFuture) {
    var newYear1 = new Date(dateNow);
    var newYear2 = new Date(dateFuture);

        var dif = (newYear2 - newYear1);
        var dif = Math.round((dif/1000)/60);
        console.log(dif);

}

0

आप निम्नानुसार कर सकते हैं:

  1. प्राप्त करें difference of dates(अंतर मिलीसेकंड में होगा)
  2. धर्मांतरित millisecondsमें minutesयानीms/1000/60

कोड:

let dateOne = new Date("2020-07-10");
let dateTwo = new Date("2020-07-11");

let msDifference =  dateTwo - dateOne;
let minutes = Math.floor(msDifference/1000/60);
console.log("Minutes between two dates =",minutes);
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.