将时间12小时格式转换为24小时格式,反之亦然

时间:2013-07-16 10:43:05

标签: javascript jquery regex string time

我想要一个将输入时间转换为24小时格式或12小时格式的js脚本。

实施例,

    输入
  • 时间,10_10_am结果应为: -

    10:10 AM(12小时格式)和10:10(24小时格式)

  • 输入
  • 时间,10_10_pm结果应为: -

    10:10 PM(12小时格式)和22:10(24小时格式)

2 个答案:

答案 0 :(得分:7)

HTML

<input type="text" id="textbox1"/>
<input type="button" id="b1" value="convert 12 hr"/>
<input type="button" id="b2" value="convert 24 hr"/>
<div id="result"></div>

JS

$(document).ready(function () {
    function am_pm_to_hours(time) {
        console.log(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 = time[0] + time[1];
        var min = time[2] + time[3];
        if (hours < 12) {
            return hours + ':' + min + ' AM';
        } else {
            hours=hours - 12;
            hours=(hours.length < 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]);
        $('#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]);
        $('#result').text(time);
    });

});

工作演示http://jsfiddle.net/cse_tushar/xEuUR/

在Adrian P的评论之后

更新了

工作演示http://jsfiddle.net/cse_tushar/xEuUR/4

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

答案 1 :(得分:0)

我不确定是否已存在任何特定功能,但这很容易编写。

考虑到您的输入始终为##_##_pm##_##_am,您可以在每个_上拆分此字符串,并将第一个值设为hours,将second设为{{{ 1}}并比较第三个 和

如果是,则将minutes添加到12 hours的小时变量中。 你需要一个带2个参数的函数(格式和字符串) 它看起来像这样:

24 hr format