2012-08-01 45 views
1

我有文本輸入法輸入時間,有時我需要從12小時格式更改時間24格式時,我雙擊輸入..所以我如何轉換時間是這樣的:jQuery的轉換時間格式

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');} 
}); 
+0

沒有'am/pm',你怎麼知道時間在白天或晚上? – xdazz 2012-08-01 02:15:47

+0

不要緊..沒問題,僅限管理員 – Abudayah 2012-08-01 02:20:10

+0

正如@xdazz所提到的,你必須擁有am/pm子午線值,否則你將無法知道它是什麼時間。看看這個:http://jsfiddle.net/374xN/1/。也許它會讓你指向正確的方向。 – Jeemusu 2012-08-01 02:35:10

回答

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/

這可能是對你的要求矯枉過正,但希望它會指向你在正確的方向。

+0

在我的情況下,不需要顯示上午/下午,但很好的工作,我會用它謝謝你:) – Abudayah 2012-08-01 16:02:16

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