JavaScript:将字符串转换为不同的格式

时间:2015-09-23 14:54:56

标签: javascript jquery variables

我正在设计一个计时器。为此,我想将用户键入的值转换为不同格式的输入。

像这样:

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

那么,我该如何转换呢?

5 个答案:

答案 0 :(得分:4)

您可以使用正则表达式和split

function convertTime(str){
    return str.split(/(?=(?:..)*$)/).join(':');
}

<强>演示:

&#13;
&#13;
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;
&#13;
&#13;

答案 1 :(得分:2)

如果您正在使用计时器,我建议您使用momentJS库(http://momentjs.com/docs/)。它涵盖了您当前和未来的所有需求。 在您的具体情况下,您应该:

  1. 将插件下载到JS文件夹
  2. 在HTML中链接插件,如下所示:

    <script src="path/to/your/JS/folder/moment.min.js" />

  3. 使用片刻转换值:

    startTime = moment(startTime, "HHmmss").format("HH:mm:ss");

答案 2 :(得分:1)

你可以做这样的事情

&#13;
&#13;
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;
&#13;
&#13;

&#13;
&#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;
&#13;
&#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++;
}