有没有办法使用javascript增加时间?

时间:2011-05-16 04:38:22

标签: javascript jquery

所以我将时间存储为'01:30:00'。我有一个开始时间和一个日期时间下拉菜单。我希望将下拉列表设置为开始时间+ 1小时。有没有办法通过javascript或jquery添加时间?

这是我目前的代码:

$(".start_time").change(function(){
        $(".end_time").val($(this).val());
});

4 个答案:

答案 0 :(得分:3)

试试这个:

  • 找到所选的开始时间索引
  • 将其提高2以找到您的结束时间指数(假设您有半小时的增量)
  • 使用mod运算符%回绕到索引0或1(分别为00:00和00:30)
$(".start_time").change(function(){
        var sel =$(this).attr('selectedIndex');
        var endIdx = (sel + 2) % 48; // 47 is 23:30, so 48 should go back to index 0
        $(".end_time").attr('selectedIndex', endIdx);        
});

Try it out on JSBin

答案 1 :(得分:1)

这里有两个不同的问题:第一个是从.start_time输入中解析出来的时间,第二个是将它递增到一个小时后。

第一个是字符串操作练习。一旦解析出字符串的各个部分,例如通过正则表达式,您可以将它们转换为Date实例并使用setHours,或者您可以将组件作为数字进行操作,然后将它们重新组合为您希望的格式的字符串。

这方面的一个例子如下:

var TIME_PARSING_REGEX = /([0-9]{2}):([0-9]{2}):([0-9]{2})/;

function padToTwoDigits(number) {
    return (number < 10 ? "0" : "") + number;
}

$(".start_time").change(function () {
    var stringTime = $(this).val();
    var regexResults = TIME_PARSING_REGEX.exec(stringTime);

    var hours = parseInt(regexResults[1], 10);
    var newHours = (hours + 1) % 24;

    var newHoursString = padToTwoDigits(newHours);
    var minutesString = regexResults[2];
    var secondsString = regexResults[3];

    var newTimeString = newHoursString + ":" + minutesString + ":" + secondsString;
    $(".end_time").val(newTimeString);
});

答案 2 :(得分:0)

基本示例......

var date = new Date();
var h = date.getHours() + 1;
var m = date.getMinutes();
var s = date.getSeconds();
alert('One hour from now: ' + h + ':' + m + ':' + s);

演示:http://jsfiddle.net/fBaDM/2/

答案 3 :(得分:0)

在解析日期/时间字符串后,您可以在日期对象中使用.setHours等方法(Mozilla Developer Center处的更多信息)。

我强烈建议使用DateJS library来处理日期和时间。我相信这对你来说非常方便。

protip:尽量避免用“jQuery标记”替换JavaScript;毕竟,这都是JS。 :)