为hh:mm:ss javasctipt字符串添加时间

时间:2017-02-16 20:32:53

标签: javascript jquery jquery-ui-timepicker

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

答案 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`)。