【问题标题】:Add time to string of hh:mm:ss javasctipt将时间添加到 hh:mm:ss javascript 字符串
【发布时间】:2017-02-16 20:32:53
【问题描述】:

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

无济于事。

【问题讨论】:

标签: javascript jquery jquery-ui-timepicker


【解决方案1】:

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

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

2) setHours() 方法只接受整数值作为“小时”参数。 . .来自MDN

hoursValue

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(), andgetSecondsmethods onappoinementEndTime`)。

【讨论】:

  • 这是日期的错字。这是小提琴:jsfiddle.net/vgkyoywq/9我得到一个无效的日期
  • 干得好!我唯一要做的就是在秒的末尾添加一个“0”,因为出于某种原因它是一个数字。 MDN 是一个很棒的资源,我几乎没有使用它。非常感谢您的帮助 talemyn
  • 哦,顺便说一句,setHours() 方法适用于您的值“10”,因为它小于 12,但您必须确保“小时”参数为 24 格式,以便在所有时间都正确设置(午夜等于“0”)
猜你喜欢
  • 1970-01-01
  • 2011-09-12
  • 1970-01-01
  • 2018-06-02
  • 1970-01-01
  • 2013-05-07
  • 1970-01-01
  • 2011-08-10
相关资源
最近更新 更多