我正在设计一个计时器。为此,我想将用户键入的值转换为不同格式的输入。
像这样:120000 => 12:00:00
34233 => 3点42分33秒
这是我现在拥有的JavaScript:
$('input#time').focusout(function(){
startTime = $(this).val();
//here code that converts to different format
$('input#time').val(startTime);
});
那么,我该如何转换呢?
答案 0 :(得分:4)
您可以使用正则表达式和split
:
function convertTime(str){
return str.split(/(?=(?:..)*$)/).join(':');
}
<强>演示:强>
function convertTime(str) {
return str.split(/(?=(?:..)*$)/).join(':');
}
$('input#time').on('input',function() {
startTime = $(this).val();
$('input#result').val(convertTime(startTime));
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<input type="number" id="time" value="120000" /> <br/>
<input id="result" value="12:00:00" />
&#13;
答案 1 :(得分:2)
如果您正在使用计时器,我建议您使用momentJS库(http://momentjs.com/docs/)。它涵盖了您当前和未来的所有需求。 在您的具体情况下,您应该:
在HTML中链接插件,如下所示:
<script src="path/to/your/JS/folder/moment.min.js" />
使用片刻转换值:
startTime = moment(startTime, "HHmmss").format("HH:mm:ss");
答案 2 :(得分:1)
你可以做这样的事情
String.prototype.formatNumber = function() {
return this.replace(/^((?:\d{1})?)((?:\d{2})+)$/, function(i, i1, i2) {
return (i1.length ? i1 + ':' : '') + i2.match(/\d{2}/g).join(':');
})
};
$('#text').on('input', function() {
$('#op').text(this.value.formatNumber());
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="text" id="text"/>
<div id=op></div>
&#13;
或
String.prototype.formatNumber = function() {
return this.match(/^.(?=(.{2})+$)|.{2}/g).join(':')
}
$('#text').on('input', function() {
$('#op').text(this.value.formatNumber());
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="text" id="text"/>
<div id=op></div>
&#13;
答案 3 :(得分:0)
拥有以下格式的时间会更容易:HH:MM:SS
String t= "15:30:18";
Time.valueof(t)
答案 4 :(得分:0)
这样的事情:
var input = "120000".split("");
var part;
var result = "";
var count = 1;
while(part = input.pop()) {
result = part+result;
if((count%2 === 0) && input.length>0) {
result = ":"+result;
}
count++;
}