所以我将时间存储为'01:30:00'。我有一个开始时间和一个日期时间下拉菜单。我希望将下拉列表设置为开始时间+ 1小时。有没有办法通过javascript或jquery添加时间?
这是我目前的代码:
$(".start_time").change(function(){
$(".end_time").val($(this).val());
});
答案 0 :(得分:3)
试试这个:
%
回绕到索引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);
});
答案 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);
答案 3 :(得分:0)
在解析日期/时间字符串后,您可以在日期对象中使用.setHours
等方法(Mozilla Developer Center处的更多信息)。
我强烈建议使用DateJS library来处理日期和时间。我相信这对你来说非常方便。
protip:尽量避免用“jQuery标记”替换JavaScript;毕竟,这都是JS。 :)