0

我的网络服务返回了以下字符串:'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);

无济于事。

4

1 回答 1

2

您在这里遇到了一些问题:

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 be10:30:00 (which you can create using thegetHours() ,getMinutes() , andgetSeconds methods onappoinementEndTime`的值)。

于 2017-02-16T20:56:59.983 回答