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


109

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


2
उपयोगकर्ता किस समय में प्रवेश कर रहा है?
एलसी।

1
इसका जवाब stackoverflow.com/questions/41948/…
wallyk

2
मुझे केवल समय रूपांतरणों की आवश्यकता है, तिथि के साथ नहीं।
किश्

1
दिनांक, समय: वे सभी एक ही बात कर रहे हैं। उत्तर में ध्यान दें कि वे सावधानी के बिना दिनांक और समय को कैसे मिलाते हैं!
wallyk

2
क्या वे दो पाठ बॉक्स हैं जिनमें केवल समय मान हैं? जैसे "11:42 बजे" या "8:09 बजे"?
बेन टॉरेल

जवाबों:


162

सुधारने। 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}

मैं कभी नहीं जानता कि क्या इस प्रारूप में तारीखों को d / m / y या m / d / y के रूप में पार्स किया जाएगा। स्वीकार किए गए आधिकारिक प्रारूप यहाँ हैं (जो भी Date.parse () स्वीकार मान्य है), developer.mozilla.org/en/JavaScript/Reference/Global_Objects/…
इवान

1
यहाँ के बारे में +1 क्या है? उस वेतन वृद्धि का क्या हिस्सा है?
जोनिरा

मुझे पता है कि यह प्राचीन है, लेकिन इस सब में जहां फॉर्म फील्ड से कुछ भी पढ़ने को नहीं मिलता है? सभी मैं देख रहा हूँ कुछ हार्ड-कोडित उदाहरण कोड है। input type="text"9:00 पूर्वाह्न से 5:00 बजे के बीच मेरे उपयोगकर्ता ने अपने दो बॉक्सों में जो भी टाइप किया है , मैं उसके बीच अंतर कैसे प्राप्त करूं ?
मार्था

@ सलमान: धन्यवाद! यह बहुत मददगार है। वर्तमान संशोधन से इसे क्यों हटाया गया?
मार्था

@ मर्था मैंने अपना जवाब सामान्य कर दिया।
सलमान ए

19

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

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 Chrome में परीक्षण किया गया console(F12 दबाएं)

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

मैं दिनांक = "2016/03/01 11:00" से तिथि = "2016/03/06 11:00" के बीच समय का अंतर कैसे प्राप्त करूं? और मैं उपरोक्त कार्य के लिए दिनांक कैसे तैयार करता हूं
विशाल सिंह

क्षणिकाएँ आपकी समस्याओं को हल करेंगी जब जावास्क्रिप्ट में समय और तारीखों के साथ काम करना
The Demz

momentjs.com/docs/#/displaying/difference जब आपको क्षण ऑब्जेक्ट्स के बीच अंतर की गणना करने की आवश्यकता होती है
द डेमज़

18

यहाँ समाधान है कि मेरे लिए काम किया है:

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

6

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

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

1
नोट: अवधि # दिनों की याद आ रही है
ओकेगन

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

5

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

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

अपने वांछित अंतर प्रारूप में आउटपुट देता है

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

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

 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;

4

यह 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

जब मैंने एक ही समय टिकट के बीच अंतर की कोशिश की, तो इसने 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";
}

3

मिलीसेकंड में समय अलग-अलग होता है

firstDate.getTime() - secondDate.getTime() 

2

मैंने टाइमर काउंटर के लिए कुछ संवर्द्धन किए हैं

//example return : 01:23:02:02
//               : 1 Day 01:23:02:02
//               : 2 Days 01:23:02:02 


function get_timeDifference(strtdatetime) {
    var datetime = new Date(strtdatetime).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);





    var msec = milisec_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


    var daylabel = "";
    if (days > 0) {
        var grammar = " ";
        if (days > 1) grammar = "s " 
        var hrreset = days * 24;
        hh = hh - hrreset;
        daylabel = days + " Day" + grammar ;
    }


    //  Format Hours
    var hourtext = '00';
    hourtext = String(hh);
    if (hourtext.length == 1) { hourtext = '0' + hourtext };

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

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

    var msectext = '00';
    msectext = String(msec);
    msectext = msectext.substring(0, 1);
    if (msectext.length == 1) { msectext = '0' + msectext };

    return daylabel + hourtext + ":" + mintext + ":" + sectext + ":" + msectext;
}

2

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

function SumHours() {
  var smon = document.getElementById('sMon').value ;
  var fmon = document.getElementById('fMon').value ;
  var diff = 0 ;
  if (smon && fmon) {
    smon = ConvertToSeconds(smon);
    fmon = ConvertToSeconds(fmon);
    diff = Math.abs( fmon - smon ) ;
    console.log( 'time difference is : ' + secondsTohhmmss(diff) );
  }

  function ConvertToSeconds(time) {
    var splitTime = time.split(":");
    return splitTime[0] * 3600 + splitTime[1] * 60;
  }

  function secondsTohhmmss(secs) {
    var hours = parseInt(secs / 3600);
    var seconds = parseInt(secs % 3600);
    var minutes = parseInt(seconds / 60) ;
    return hours + "hours : " + minutes + "minutes ";
  }
}
<td>
  <input type="time" class="dataInput" id="sMon" onchange="SumHours();" />
</td>

<td>
  <input type="time" class="dataInputt" id="fMon" onchange="SumHours();"/>
</td>


1

मैं केवल getTime();और उदाहरण के Date.now()लिए मिलीसेकंड में अंतर वापस करने के लिए उपयोग करूंगा :

 //specified date:

var oneDate = new Date("November 02, 2017 06:00:00");

//number of milliseconds since midnight Jan 1 1970 till specified date

var oneDateMiliseconds = oneDate.getTime();

////number of milliseconds since midnight Jan 1 1970 till now

var currentMiliseconds = Date.now(); 

//return time difference in miliseconds

alert(currentMiliseconds-oneDateMiliseconds);

1
You can Get Two Time Different with this function. 

 /**
     * Get Two Time Different
     * @param join
     * @param lastSeen
     * @param now
     * @returns {string}
     */
    function getTimeDiff( join, lastSeen, now = false)
    {
        let t1 = new Date(join).getTime(), t2 = new Date(lastSeen).getTime(), milliseconds =0, time ='';
        if (now) t2 = Date.now();
        if( isNaN(t1) || isNaN(t2) ) return '';
        if (t1 < t2) milliseconds = t2 - t1; else milliseconds = t1 - t2;
        var days = Math.floor(milliseconds / 1000 / 60 / (60 * 24));
        var date_diff = new Date( milliseconds );
        if (days > 0) time += days + 'd ';
        if (date_diff.getHours() > 0) time += date_diff.getHours() + 'h ';
        if (date_diff.getMinutes() > 0) time += date_diff.getMinutes() + 'm ';
        if (date_diff.getSeconds() > 0) time += date_diff.getSeconds() + 's ';
        return time;
    }
    
    
    console.log(getTimeDiff(1578852606608, 1579530945513));
    


0

मैं इसे एपोक के माध्यम से करना पसंद करता हूं।

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

मेरे मामले में, मैं क्रोम स्टोरेज पर मिलीसेकंड में समय स्टोर करने वाला हूं और बाद में घंटों में अलग-अलग खोजने की कोशिश करता हूं।

function timeDiffInHours(milliseconds){
    time_diff = (new Date).getTime() - milliseconds
    return parseInt((time_diff/(1000*60*60)) % 24)
}

// This is again sending current time and diff would be 0.
timeDiffInHours((new Date).getTime());  

0

आप इस उद्देश्य के लिए क्षण js का उपयोग कर सकते हैं। 'JNow '(') के क्षणों से आपको वर्तमान समय से किसी भी समय अंतर मिलेगा।

var m1 = any date time on moment format;

console.log(m1.fromNow());

0
var moment = require("moment");
var momentDurationFormatSetup = require("moment-duration-format")

var now  = "2015-07-16T16:33:39.113Z";
var then = "2015-06-16T22:33:39.113Z";

var ms = moment(now,"YYYY-MM-DD'T'HH:mm:ss:SSSZ").diff(moment(then,"YYYY-MM-DD'T'HH:mm:ss:SSSZ"));
var d = moment.duration(ms);
var s = d.format("dd:hh:mm:ss");
console.log(s);

-4

php में फॉर्म सबमिशन के बाद इनपुट वैल्यू को पकड़ो

$start_time = $_POST('start_time');
$end_time =$_POST('end_time');
$start = $start_time;
$end = $end_time;
$datetime1 = new DateTime($end);
$datetime2 = new DateTime($start);
//echo $datetime1->format('H:i:s');
$interval = $datetime1->diff($datetime2);
$elapsed = $interval->format('%h:%i');
$time = explode(":",$elapsed);
$hours = $time[0];
$minutes = $time[1];
$tminutes = $minutes + ($hours*60);

चर $ tminutes मिनट में कुल भिन्न होता है, काम का समय $ घंटे होता है। यह कोड php के लिए है इस तर्क का उपयोग करें और इस कोड को js में बदलें


आप किस त्रुटि का सामना कर रहे हैं, यह मेरे लिए ठीक काम कर रहा है!
मोहसिन शुकत

प्रश्न लेखक यह जानना चाहता है कि इसे js में कैसे करना है, इसलिए मुझे i।
४49 बजे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.