सवाल जावास्क्रिप्ट में समय अंतर की जांच करें


जावास्क्रिप्ट में दो टेक्स्ट-बॉक्स से आप समय अंतर कैसे देखेंगे?


80
2017-11-24 05:12


मूल


उपयोगकर्ता किस समय दर्ज कर रहा है? - lc.
इसका उत्तर दिया जाता है stackoverflow.com/questions/41948/... - wallyk
मुझे केवल समय रूपांतरणों की आवश्यकता है, तारीख के साथ नहीं। - Kishh
क्या वे दो टेक्स्ट बॉक्स हैं जिनमें केवल समय मूल्य हैं? जैसे "11:42 बजे" या "8:09 बजे"? - Ben Torell
हाँ, वैसे ही जैसा आपने कहा था - Kishh


जवाब:


सुधारने। जावास्क्रिप्ट घटाएं Date वस्तुओं को अपना अंतर प्राप्त करने के लिए:

// use a constant date (e.g. 2000-01-01) and the desired time to initialize two dates

var date1 = new Date(2000, 0, 1,  9, 0); // 9:00 AM
var date2 = new Date(2000, 0, 1, 17, 0); // 5:00 PM

// the following is to handle cases where the times are on the opposite side of
// midnight e.g. when you want to get the difference between 9:00 PM and 5:00 AM

if (date2 < date1) {
    date2.setDate(date2.getDate() + 1);
}

var diff = date2 - date1;

// 28800000 milliseconds (8 hours)

फिर आप मिलीसेकंड को घंटे, मिनट और सेकंड में इस तरह परिवर्तित कर सकते हैं:

var msec = diff;
var hh = Math.floor(msec / 1000 / 60 / 60);
msec -= hh * 1000 * 60 * 60;
var mm = Math.floor(msec / 1000 / 60);
msec -= mm * 1000 * 60;
var ss = Math.floor(msec / 1000);
msec -= ss * 1000;
// diff = 28800000 => hh = 8, mm = 0, ss = 0, msec = 0

आप स्ट्रिंग के रूप में समय को 24 घंटे के प्रारूप में कनवर्ट कर सकते हैं:

function parseTime(s) {
    var part = s.match(/(\d+):(\d+)(?: )?(am|pm)?/i);
    var hh = parseInt(part[1], 10);
    var mm = parseInt(part[2], 10);
    var ap = part[3] ? part[3].toUpperCase() : null;
    if (ap === "AM") {
        if (hh == 12) {
            hh = 0;
        }
    }
    if (ap === "PM") {
        if (hh != 12) {
            hh += 12;
        }
    }
    return { hh: hh, mm: mm };
}
parseTime("12:00 AM"); // {hh:  0, mm: 0}
parseTime("12:00 PM"); // {hh: 12, mm: 0}
parseTime("01:00 PM"); // {hh: 13, mm: 0}
parseTime("23:00");    // {hh: 23, mm: 0}

144
2017-11-24 05:52



मुझे कभी पता नहीं है कि इस प्रारूप में तिथियों को डी / एम / वाई या एम / डी / वाई के रूप में पार्स किया जाएगा। स्वीकार किए गए आधिकारिक प्रारूप यहां हैं (जो भी दिनांक .parse () स्वीकार मान्य है) developer.mozilla.org/en/JavaScript/Reference/Global_Objects/... - Ivan Maeder
यहां के बारे में +1 क्या है? तारीख का क्या हिस्सा बढ़ रहा है? - Jonny Leeds
मुझे पता है कि यह प्राचीन है, लेकिन जहां इस गंदे में कुछ भी फार्म फ़ील्ड से पढ़ता है? मैं देखता हूं कि कुछ हार्ड-कोडेड उदाहरण कोड है। मेरे उपयोगकर्ता ने जो भी बार टाइप किया है, उसके बीच अंतर कैसे प्राप्त करूं input type="text" बक्से 9:00 बजे से शाम 5:00 बजे के बीच? - Martha
@ मार्था यहां एक पुरानी संशोधन देखें: stackoverflow.com/revisions/1788084/2 - Salman A
@ सलमाना: धन्यवाद! यह बहुत उपयोगी है। वर्तमान संशोधन से इसे क्यों हटा दिया गया? - Martha


यह फ़ंक्शन एक डेटाटाइम स्ट्रिंग और वर्तमान डेटाटाइम से अंतर के साथ एक स्ट्रिंग देता है।

function get_time_diff( datetime )
{
    var datetime = typeof datetime !== 'undefined' ? datetime : "2014-01-01 01:02:03.123456";

    var datetime = new Date( datetime ).getTime();
    var now = new Date().getTime();

    if( isNaN(datetime) )
    {
        return "";
    }

    console.log( datetime + " " + now);

    if (datetime < now) {
        var milisec_diff = now - datetime;
    }else{
        var milisec_diff = datetime - now;
    }

    var days = Math.floor(milisec_diff / 1000 / 60 / (60 * 24));

    var date_diff = new Date( milisec_diff );

    return days + " Days "+ date_diff.getHours() + " Hours " + date_diff.getMinutes() + " Minutes " + date_diff.getSeconds() + " Seconds";
}

Google क्रोम में परीक्षण किया गया console (एफ 12 दबाएं)

get_time_diff()
1388534523123 1375877555722
"146 Days 12 Hours 49 Minutes 27 Seconds"

16
2017-08-07 12:18



दिनांक = "2016/03/01 11:00" तिथि के बीच मुझे समय भिन्नता कैसे मिलती है = "2016/03/06 11:00"। और मैं उपरोक्त फ़ंक्शन के लिए दिनांक कैसे बना सकता हूं - Vishal Singh
momentjs.com जावास्क्रिप्ट में समय और तिथियों के साथ काम करते समय आपकी समस्याओं का समाधान करेगा - The Demz
momentjs.com/docs/#/displaying/difference जब आपको पल ऑब्जेक्ट्स के बीच अंतर की गणना करने की आवश्यकता होती है - The Demz


यहां समाधान है जो मेरे लिए काम करता है:

var date1 = new Date("08/05/2015 23:41:20");
var date2 = new Date("08/06/2015 02:56:32");

var diff = date2.getTime() - date1.getTime();

var msec = diff;
var hh = Math.floor(msec / 1000 / 60 / 60);
msec -= hh * 1000 * 60 * 60;
var mm = Math.floor(msec / 1000 / 60);
msec -= mm * 1000 * 60;
var ss = Math.floor(msec / 1000);
msec -= ss * 1000;

alert(hh + ":" + mm + ":" + ss);

9
2017-08-06 07:13





यहाँ मेरा प्रतिपादन है ....

function get_time_difference(earlierDate, laterDate) 
{
    var oDiff = new Object();

    //  Calculate Differences
    //  -------------------------------------------------------------------  //
    var nTotalDiff = laterDate.getTime() - earlierDate.getTime();

    oDiff.days = Math.floor(nTotalDiff / 1000 / 60 / 60 / 24);
    nTotalDiff -= oDiff.days * 1000 * 60 * 60 * 24;

    oDiff.hours = Math.floor(nTotalDiff / 1000 / 60 / 60);
    nTotalDiff -= oDiff.hours * 1000 * 60 * 60;

    oDiff.minutes = Math.floor(nTotalDiff / 1000 / 60);
    nTotalDiff -= oDiff.minutes * 1000 * 60;

    oDiff.seconds = Math.floor(nTotalDiff / 1000);
    //  -------------------------------------------------------------------  //

    //  Format Duration
    //  -------------------------------------------------------------------  //
    //  Format Hours
    var hourtext = '00';
    if (oDiff.days > 0){ hourtext = String(oDiff.days);}
    if (hourtext.length == 1){hourtext = '0' + hourtext};

    //  Format Minutes
    var mintext = '00';
    if (oDiff.minutes > 0){ mintext = String(oDiff.minutes);}
    if (mintext.length == 1) { mintext = '0' + mintext };

    //  Format Seconds
    var sectext = '00';
    if (oDiff.seconds > 0) { sectext = String(oDiff.seconds); }
    if (sectext.length == 1) { sectext = '0' + sectext };

    //  Set Duration
    var sDuration = hourtext + ':' + mintext + ':' + sectext;
    oDiff.duration = sDuration;
    //  -------------------------------------------------------------------  //

    return oDiff;
}

6
2017-10-22 21:22



नोट: अवधि में # दिनों की कमी है - okigan
घंटाटेक्स्ट oDiff.days का उपयोग कर रहा है, और घंटे की गणना करने के लिए घंटों का उपयोग नहीं किया जाता है - aguaviva


एक अच्छा समाधान पर उपलब्ध है

http://blogs.digitss.com/javascript/calculate-datetime-difference-simple-javascript-code-snippet/ 

आउटपुट को आपके वांछित differnece प्रारूप में देता है

दिन: घंटे: मिनट: सेकंड।

उस कोड का थोड़ा संशोधित संस्करण नीचे दिखाया गया है

 var vdaysdiff; // difference of the dates
   var vhourDiff;
   var vmindiff;
   var vsecdiff;

   vdaysdiff = Math.floor(diff/1000/60/60/24);  // in days
   diff -= vdaysdiff*1000*60*60*24;

   vhourDiff = Math.floor(diff/1000/60/60);  // in hours
   diff -= vhourDiff*1000*60*60;

   vmindiff = Math.floor(diff/1000/60); // in minutes
   diff -= vmindiff*1000*60;

   vsecdiff= Math.floor(diff/1000);  // in seconds

   //Text formatting
   var hourtext = '00';
   if (hourDiff > 0){ hourtext = String(hourDiff);}
   if (hourtext.length == 1){hourtext = '0' + hourtext};                                                              

   var mintext = '00';                           
   if (mindiff > 0){ mintext = String(mindiff);}
   if (mintext.length == 1){mintext = '0' + mintext};

  //shows output as HH:MM ( i needed shorter duration)
   duration.value= hourtext + ':' + mintext;

5
2018-04-21 13:38





यह एक जोड़ा है dmd733जवाब मैंने दिन की अवधि के साथ बग तय किया (अच्छी तरह से मुझे आशा है कि मैंने किया है, हर मामले का परीक्षण करने में सक्षम नहीं है)।

मैंने तुरंत परिणामस्वरूप एक स्ट्रिंग प्रॉपर्टी भी जोड़ दी जो सामान्य समय बीत चुका है (खराब घोंसले के लिए खेद है !!)। उदाहरण के लिए यदि यूआई के लिए उपयोग किया जाता है और यह इंगित करता है कि कुछ अपडेट किया गया था (जैसे आरएसएस फ़ीड)। जगह से बाहर की तरह लेकिन अच्छी तरह से करने के लिए:

function getTimeDiffAndPrettyText(oDatePublished) {

  var oResult = {};

  var oToday = new Date();

  var nDiff = oToday.getTime() - oDatePublished.getTime();

  // Get diff in days
  oResult.days = Math.floor(nDiff / 1000 / 60 / 60 / 24);
  nDiff -= oResult.days * 1000 * 60 * 60 * 24;

  // Get diff in hours
  oResult.hours = Math.floor(nDiff / 1000 / 60 / 60);
  nDiff -= oResult.hours * 1000 * 60 * 60;

  // Get diff in minutes
  oResult.minutes = Math.floor(nDiff / 1000 / 60);
  nDiff -= oResult.minutes * 1000 * 60;

  // Get diff in seconds
  oResult.seconds = Math.floor(nDiff / 1000);

  // Render the diffs into friendly duration string

  // Days
  var sDays = '00';
  if (oResult.days > 0) {
      sDays = String(oResult.days);
  }
  if (sDays.length === 1) {
      sDays = '0' + sDays;
  }

  // Format Hours
  var sHour = '00';
  if (oResult.hours > 0) {
      sHour = String(oResult.hours);
  }
  if (sHour.length === 1) {
      sHour = '0' + sHour;
  }

  //  Format Minutes
  var sMins = '00';
  if (oResult.minutes > 0) {
      sMins = String(oResult.minutes);
  }
  if (sMins.length === 1) {
      sMins = '0' + sMins;
  }

  //  Format Seconds
  var sSecs = '00';
  if (oResult.seconds > 0) {
      sSecs = String(oResult.seconds);
  }
  if (sSecs.length === 1) {
      sSecs = '0' + sSecs;
  }

  //  Set Duration
  var sDuration = sDays + ':' + sHour + ':' + sMins + ':' + sSecs;
  oResult.duration = sDuration;

  // Set friendly text for printing
  if(oResult.days === 0) {

      if(oResult.hours === 0) {

          if(oResult.minutes === 0) {
              var sSecHolder = oResult.seconds > 1 ? 'Seconds' : 'Second';
              oResult.friendlyNiceText = oResult.seconds + ' ' + sSecHolder + ' ago';
          } else { 
              var sMinutesHolder = oResult.minutes > 1 ? 'Minutes' : 'Minute';
              oResult.friendlyNiceText = oResult.minutes + ' ' + sMinutesHolder + ' ago';
          }

      } else {
          var sHourHolder = oResult.hours > 1 ? 'Hours' : 'Hour';
          oResult.friendlyNiceText = oResult.hours + ' ' + sHourHolder + ' ago';
      }
  } else { 
      var sDayHolder = oResult.days > 1 ? 'Days' : 'Day';
      oResult.friendlyNiceText = oResult.days + ' ' + sDayHolder + ' ago';
  }

  return oResult;
}

3
2017-09-24 13:06





जब मैंने एक ही समय के टिकट के बीच अंतर की कोशिश की तो उसने 0 दिन 5 घंटे 30 मिनट दिए

इसलिए इसे ठीक करने के लिए मैंने 5 घंटे और 30 मिनट घटा दिया है

function get_time_diff( datetime )
{
var datetime = typeof datetime !== 'undefined' ? datetime : "2014-01-01 01:02:03.123456";

var datetime = new Date(datetime).getTime();
var now = new Date().getTime();

if( isNaN(datetime) )
{
    return "";
}

console.log( datetime + " " + now);

if (datetime < now) {
    var milisec_diff = now - datetime;
}else{
    var milisec_diff = datetime - now;
}

var days = Math.floor(milisec_diff / 1000 / 60 / (60 * 24));

var date_diff = new Date( milisec_diff );

return days + "d "+ (date_diff.getHours() - 5) + "h " + (date_diff.getMinutes() - 30) + "m";
}

2
2018-02-05 16:25





मिलीसेकंड में समय अलग है

firstDate.getTime() - secondDate.getTime() 

2
2018-03-01 09:25





मुझे एपोक के माध्यम से ऐसा करना पसंद है।

var now = new Date();
var future = new Date(now.setMinutes(15));

var futureEpoch = moment(future).unix();
var nowEpoch = moment(now).unix();
var differenceInEpoch = nowEpoch - scheduledEpoch ;

console.log("futureEpoch        : " + futureEpoch);
console.log("nowEpoch              : " + nowEpoch);
console.log("differenceInEpoch     : " + differenceInEpoch);

var diffTime = new Date(0); // The 0 there is the key, which sets the date to the epoch
diffTime.setUTCSeconds(differenceInEpoch);
console.log("new diffTime : " + diffTime);

0
2017-09-03 13:43