Check time difference in Javascript

后端 未结 18 1399
梦毁少年i
梦毁少年i 2020-11-22 04:27

How would you check time difference from two text-boxes in Javascript?

18条回答
  •  轮回少年
    2020-11-22 04:52

    Improvise. Subtract JavaScript Date objects to get their difference:

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

    You can then convert milliseconds to hour, minute and seconds like this:

    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
    

    You can convert time as string to 24-hour format like this:

    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}
    

提交回复
热议问题