在我的网页中,我有一些日期字段,并为其分配了Bootstrap datepicker
。在javascript
函数中,我需要获取名为onBookingDate
的字段的日期。我可以这样得到它。
var on_BookingDate = jQuery('#datepick_onBooking').val();
然后我需要添加8个月,然后将新日期值与使用上述方法检索的另一个日期值进行比较。这是我使用的代码。 (所有日期均采用dd-mm-yyyy
)
var on_BookingDate = jQuery('#datepick_onBooking').val();
var dateArray = on_BookingDate.split("-");
//dateArray[1] contains the month value
var dateObj = new Date(dateArray[2], dateArray[1] - 1, dateArray[0]);
dateObj.setMonth(dateObj.getMonth() + 8);
var intFreeLastDate = dateObj.getDate() + "-" + (dateObj.getMonth() + 1) + "-" + dateObj.getFullYear();
为了比较日期,它们必须是时间值。为此
.datepicker('getDate')
getTime()
必须使用。但是当我尝试
时var int_free_last_date = intFreeLastDate.datepicker('getDate');
alert("int free last date get date = "+int_free_last_date);
我收到以下错误,
Uncaught TypeError: undefined is not a function
这是为什么?以及如何解决这个问题。不是int_free_last_date
所需的日期格式吗?
JS FIddle http://jsfiddle.net/Lnmvc5ao/
答案 0 :(得分:1)
我想我看到了这个问题。这一行:
var int_free_last_date = intFreeLastDate.datepicker('getDate');
使用.datepicker('getDate')
功能错误。当你这样称它时,它试图从HTML表单元素中获取日期值。例如,如果您致电:
jQuery('#datepick_onBooking').datepicker('getDate');
它将返回('#datepick_onBooking')
元素的datepicker中存在的日期值。如果intLastFreeDate
类似01-02-2015
,则该行等同于:
var int_free_last_date = 01-02-2015.datepicker('getDate');
正如您所能想象的那样,01-02-2015
undefined
不起作用。
我认为您接近您的解决方案,您只需将已存在的日期格式化为时间值并进行比较:
var on_BookingDateTime = on_BookingDate.getTime();
var lastFreeDateTime = intLastFreeDate.getTime();
// Compare em however you would.
希望这有帮助!
修改强>
由于on_BookingDate
和intFreeLastDate
都是有效日期字符串dd-mm-yyyy
,因此您可以按-
拆分它们,并从中生成date
个对象,然后在这些对象上调用getTime()
,然后进行比较。
var temp1= on_BookingDate.split("-");
var temp2 = intFreeLastDate.split("-");
// [0] is day, [1] is month, [2] is year.
var date1 = new Date(temp1[2], (temp1[1] - 1), temp1[0]);
var date2 = new Date(temp2[2], (temp2[1] - 1), temp2[0]);
var time1 = date1.getTime();
var time2 = date2.getTime();
// Then compare them!