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

有没有办法使用javascript来增加时间?,javascript,jquery,Javascript,Jquery,所以我将时间存储为“01:30:00”。我有一个开始时间和日期时间下拉列表。我希望下拉列表设置为开始时间+1小时。有没有办法通过javascript或jquery添加时间 以下是我当前的代码: $(".start_time").change(function(){ $(".end_time").val($(this).val()); }); 基本示例 var date = new Date(); var h = date.getHours() + 1; var m = date

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

以下是我当前的代码:

$(".start_time").change(function(){
        $(".end_time").val($(this).val());
});
基本示例

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

演示:

解析日期/时间字符串后,可以在日期对象中使用
.setHours
等方法(更多信息请访问)

我强烈推荐使用日期和时间。我相信这对你很方便


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

这里有两个独立的问题:第一个是从
.start\u time
输入中解析出时间,第二个是将时间增加到一小时后

第一个是真正的字符串操作练习。一旦您解析出字符串的各个部分,例如通过正则表达式,您可以将它们转换为
日期
实例并使用
设置小时数
,或者您可以将组件作为数字进行操作,然后将其重新组合成所需格式的字符串

这方面的一个例子如下:

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);
});
var-TIME\u-PARSING\u REGEX=/([0-9]{2}):([0-9]{2}):([0-9]{2})/;
函数位(数字){
返回(数字<10?“0”:“)+数字;
}
$(“.start_time”).change(函数(){
var stringTime=$(this.val();
var regexResults=TIME\u PARSING\u REGEX.exec(stringTime);
var hours=parseInt(regexResults[1],10);
var newHours=(小时+1)%24;
var newhourstring=padToTwoDigits(newHours);
var minuteString=regexResults[2];
var secondsString=regexResults[3];
var newTimeString=newhourstring+“:”+minutestring+“:”+secondssstring;
$(“.end_time”).val(newTimeString);
});
试试这个:

  • 查找所选的开始时间索引
  • 将其增加2以查找结束时间索引(假设您有半小时的增量)
  • 使用mod运算符
    %
    将索引换回0或1(分别适用于00:00和00:30)

.

两个下拉列表是否具有相同顺序的相同选项?它们都是每小时一次吗?它们都有相同顺序的选项。每半小时一班。所以现在是凌晨1点,凌晨1:30,等等。请不要忘了按选择选项的数量进行修改,这样,如果他们选择了最后一个或倒数第二个选项,它就会自动返回。@Dom:Thank;我忘了那件事;谢谢你的建议!请允许我建议,不要使用if和减号,只需
endIdx=(sel+2)%47
?@Dom:wow,在阳光明媚的夜晚吃点好东西。爱死它了!请随时根据您的建议编辑此答案!完成!我想了一会儿,其实是
48
,呵呵。
$(".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);        
});