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

How to always revert to a max 24hr period when adding time values

本文关键字:恢复 24小时 添加 时间      更新时间:2023-09-26

我正在开发一个网页,该网页计算各种数字,以得出表中的特定操作时间,每个时间戳都是根据几个变量预先计算的数量相加的,但涉及到大量的小时,这将使我的总输出超过24小时。我在SO上发现了一个脚本,它从军事时间恢复为AM/PM格式,但由于总和可能超过24位数,该脚本只在时间小于25小时时修改时间。如果我总共有39个小时,我会在晚上27:00结束,而它应该是凌晨3点。如何修改脚本,使其在24小时内循环,并因此给我一个准确的上午或下午?以下是修改总小时数的脚本的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="b1",它将24:00格式转换为12AM或12PM格式。我去掉了"B2"部分,因为我不需要它。任何提示都有帮助。。

只需要一个小的更改。只需在以下行中使用"%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;

就是这样!:)