我的网络服务返回了以下字符串:' 10:00:00'。
我的时间戳通过以下方式成功禁用:
$('#appointmentTimeTextbox').timepicker('option',
'disableTimeRanges',
[[obj.appointmentTime, obj.appointmentEndTime]]);
我想要的是将{30}分钟(时间戳中的一个选项)添加到obj.appointmentEndTime
。我试过了:
var appointmentEndTime = new date(obj.appointmentEndTime);
appointmentEndTime.setHours(appointmentEndTime.getHours() + .5);
无济于事。
答案 0 :(得分:2)
你在这里遇到了一些问题:
1)这可能只是问题中的拼写错误,但日期构造函数必须大写:new Date(...
2)setHours()
方法仅对"小时"采用整数值。参数。 。 。来自MDN:
<强> hoursValue 强>
0到23之间的整数,表示小时。
您可以在两个小时内添加两种方式:提供&#34;分钟&#34; setHours()
电话中的参数:
appointmentEndTime.setHours(appointmentEndTime.getHours(), 30);
。 。 。或者只使用setMinutes()
方法:
appointmentEndTime.setMinutes(appointmentEndTime.getMinutes() + 30);
3)使用以下方法创建新日期值时:
var appointmentEndTime = new date(obj.appointmentEndTime);
。 。 。您正在使用全新的Date
对象,因此您需要将新时间值复制回原始obj.appointmentEndTime
属性,或者您需要从新{{1}创建值变量,并将其传递到appointmentEndTime
方法而不是timepicker()
。
<强>更新强>
好的,所以我看了你的小提琴,你现在遇到的问题是你不能只用一个时间值创建一个日期:
obj.appointmentEndTime
再次,顺便提一下MDN(很棒的资源),var appoinementEndTime = new Date('10:00:00');
构造函数的有效输入是:
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]]]]]);
使用它(以及你的价值&#39; 10:00:00 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:30:00 ), the time value of the date should be
getHours()(which you can create using the
getMinutes(),
getSeconds , and
appoinementEndTime`)。