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

Is there a way to increment time using javascript?

本文关键字:增加 时间 javascript 有没有      更新时间:2023-09-26

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

这是我当前的代码:

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

试试这个:

  • 查找开始时间的选定索引
  • 将其提高 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);        
});

在JSBin上尝试一下。

这里有两个单独的问题:第一个是从.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);
});

基本示例...

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/

解析日期/时间字符串后,可以在日期对象中使用.setHours等方法(有关详细信息,请参阅 Mozilla 开发人员中心)。

我强烈推荐 DateJS 库来处理日期和时间。我相信这对你来说会非常方便。

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