jquery转换时间格式

时间:2012-08-01 02:11:10

标签: jquery regex

我有文本输入来输入时间,有时我需要将时间从12小时格式更改为24格式当我双击输入时..所以我怎么能像这样转换时间:

1:00 => 13:00

01:00 => 13:00

(提示)我的代码:

   $("input").live('dblclick', function(){
    var type12 = $(this).val();
    if (type12.length == 4){
    var time = type12.replace(/\:/, '');
    var hh = time.substr(0,1);
    var mm = time.substr(0,3); // TO DO
    var type24 = Number(hh) + 12;
    var time24 = hh + mm;
    $(this).val(time24);
    sortTimes($(this).closest("tr"));
    }else{alert('not');}
});

2 个答案:

答案 0 :(得分:1)

这是答案

   $("input").live('dblclick', function(){
    var type12 = $(this).val();
    if (type12.length == 4){
        var time = type12.replace(/\:/, '');
        var hh = time.substr(0,1);
        var mm = time.substr(1,2);
        var hh = Number(hh) + 12;
        var time24 = hh + ':' + mm;
        $(this).val(time24);
    }else if(type12.length == 5 && type12.substr(0,1) == 0) {
        var time = type12.replace(/\:/, '');
        var hh = time.substr(0,2);
        var mm = time.substr(2,2);
        var hh = Number(hh) + 12;
        var time24 = hh + ':' + mm;
        $(this).val(time24);
    }
});

答案 1 :(得分:1)

根据我的评论,这就是我要做的。首先,您应该为12小时的时间定义一致的字符串。我会使用格式hh:mm am / hh:mm pm

其次,我会放弃.live()有两个原因,首先,因为从jQuery 1.7开始,它已经被折旧并被.on()取代,其次是因为你需要具有转换功能24小时的时间回到第二次双击按钮的12小时时间。如果您使用单击,我们可以使用.toggle(),但是对于双击,我们需要使用插件,我建议使用jQuery-Function-Toggle-Plugin。一旦包含在您的代码中,就可以这样使用:

$('input').funcToggle('dblclick', function() {
    //Odd Click
}, function() {
    // Even Click
});

接下来,我们可以只使用.indexOf(":")来检查字符串中是否有:,然后使用.split(“:”)来代替使​​用完全正常的子字符串。将字符串拆分为数组。我就这样做了:

var type12 = "12:45";
if (type12.indexOf(":") != -1) {
    time_array = type12.split(":");
    hh = time_array[0];  //12
    mm = time_array[1];  //45
}

完整的代码和示例可以在这里找到 - > http://jsfiddle.net/374xN/4/

这对你提出的问题可能有点过头了,但希望它会指出你正确的方向。