将时间添加到 hh:mm:ss javascript 的字符串

Add time to string of hh:mm:ss javasctipt

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

无果。

您遇到了一些问题:

1) 这可能只是题中的错字,但是日期构造函数必须大写:new Date(...

2) setHours() 方法只接受 "hours" 参数的整数值。 . .来自 MDN:

hoursValue

integer between 0 and 23, representing the hour.

您可以通过两种方式添加半小时:通过在 setHours() 调用中提供 "minutes" 参数:

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`).