我想要一个将输入时间转换为24小时格式或12小时格式的js脚本。
实施例,
时间,10_10_am
结果应为: -
10:10 AM
(12小时格式)和10:10
(24小时格式)
时间,10_10_pm
结果应为: -
10:10 PM
(12小时格式)和22:10
(24小时格式)
答案 0 :(得分:7)
<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>
$(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