您在这里遇到了一些问题:
1)这可能只是问题中的一个错字,但日期构造函数必须大写:new Date(...
2) 该setHours()
方法仅采用整数值作为“小时”参数。. . 来自MDN:
小时值
0 到 23 之间的整数,表示小时。
您可以通过两种方式在半小时内添加:通过在setHours()
调用中提供“分钟”参数:
appointmentEndTime.setHours(appointmentEndTime.getHours(), 30);
. . . 或简单地使用以下setMinutes()
方法:
appointmentEndTime.setMinutes(appointmentEndTime.getMinutes() + 30);
3)当您创建新的日期值时:
var appointmentEndTime = new date(obj.appointmentEndTime);
. . . 您正在使用一个全新的Date
对象,因此您需要将新的时间值复制回原始obj.appointmentEndTime
属性,或者您需要从新appointmentEndTime
变量创建值,并将其传递给timepicker()
方法而不是obj.appointmentEndTime
.
更新
好的,所以我查看了您的 Fiddle,您现在遇到的问题是您无法创建仅具有时间值的日期:
var appoinementEndTime = new Date('10:00:00');
同样,查看MDN(顺便说一句,这是一个很好的资源),Date
构造函数的有效输入是:
new Date(); // The exact moment at the creation of the Date
new Date(value); // In milliseconds, since 1 January 1970 00:00:00 UTC
new Date(dateString); // A string value representing a date (see link for valid formats)
new Date(year, month[, date[, hours[, minutes[, seconds[, milliseconds]]]]]);
因此,您最好的选择是选择一个日期(当前日期最简单),然后覆盖该日期的时间值,以获得您想要的值:
var endTimeArray = obj.appoinementEndTime.split(":");
var appoinementEndTime = new Date();
appoinementEndTime.setHours(endTimeArray[0], // the hours value
endTimeArray[1] + 30, // the minutes value
endTimeArray[2], // the seconds value
0); // the milliseconds value
使用它(以及'10:00:00 ), the time value of the date should be
10:30:00 (which you can create using the
getHours() ,
getMinutes() , and
getSeconds methods on
appoinementEndTime`的值)。