如何在添加时间值时始终恢复到最大24小时的时间段

时间:2015-03-18 18:19:59

标签: javascript jquery

我正在开发一个网页,该网页计算各种数据以达到表格中的特定操作时间,每个时间戳总结为基于几个pf变量的预先计算的数量,但是涉及大量的小时数这将使我的总产量超过24小时。我在SO上找到了一个脚本,它从军事时间恢复到AM / PM格式,但由于总和可以超过24位,脚本只会在25小时内修改时间。如果我总共得到39个小时,我最终会在晚上27:00结束,而应该是凌晨3点。如何修改脚本以使其循环24小时并因此给出准确的AM或PM?这是脚本的JSFiddle链接,修改总和小时总数:http://jsfiddle.net/cse_tushar/xEuUR/4/ --->打出大于24:59的数字,你就会明白我的意思。我有一个链接到我正在处理的页面,而且脚本非常复杂,所以我将链接发布到实际页面,并尝试发布相关的JS样本,如果我得到的话要求这样做(或者如果有人甚至注意到这个帖子): http://dcalvitti.altervista.org/push.html

小时修订脚本的代码:

<input type="text" class="textbox1"/>
<input type="button" id="b1" value="convert 12 hr"/>

JS

 $(document).ready(function () {
 function am_pm_to_hours(time) {
    var hours = Number(time.match(/^(\d+)/)[1]);
    var minutes = Number(time.match(/:(\d+)/)[1]);
    var AMPM = time.match(/\s(.*)$/)[1];
    if (AMPM == "pm" && hours < 12) hours = hours + 12;
    if (AMPM == "am" && hours == 12) hours = hours - 12;
    var sHours = hours.toString();
    var sMinutes = minutes.toString();
    if (hours < 10) sHours = "0" + sHours;
    if (minutes < 10) sMinutes = "0" + sMinutes;
    return (sHours +':'+sMinutes);
}

function hours_am_pm(time) {
    var hours = Number(time.match(/^(\d+)/)[1]);
    var min =  Number(time.match(/:(\d+)/)[1]);
    if (min < 10) min = "0" + min;
    if (hours < 12) {
        return hours + ':' + min + ' AM';
    } else {
        hours=hours - 12;
        hours=(hours < 10) ? '0'+hours:hours;
        return hours+ ':' + min + ' PM';
    }
}
$('#b1').click(function(){
     var n = $('.textbox1').val();
     var n1 =n.split('_');
    var time = hours_am_pm(n1[0]+n1[1]).replace('::',':');;
    $('.result').text(time);
}); 
$('#b2').click(function(){
    var n = $('.textbox1').val();
     var n1 =n.split('_');
    var time = am_pm_to_hours(n1[0]+':'+n1[1]+' '+n1[2]).replace('::',':');
    $('.result').text(time);
});

});

相关位是ID =&#34; b1&#34;它将24:00格式转换为12AM或12 PM-格式。我删除了&#34; B2&#34;因为我不需要它。 任何提示都有帮助..

1 个答案:

答案 0 :(得分:0)

只需要进行一些小改动。只需在这些行上使用“%24”:

function am_pm_to_hours(time) {
var hours = Number(time.match(/^(\d+)/)[1])%24;

function hours_am_pm(time) {
var hours = Number(time.match(/^(\d+)/)[1])%24;

就是这样! :)