使用 bootstrap 日期选择器进行计算
Do calculations with bootstrap datepicker
在我的网页中,我有一些日期字段,它们被分配了 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/
我想我明白了。这一行:
var int_free_last_date = intFreeLastDate.datepicker('getDate');
使用 .datepicker('getDate')
函数有误。当您这样称呼它时,它会尝试从 HTML 表单元素中获取日期值。例如,如果您调用:
jQuery('#datepick_onBooking').datepicker('getDate');
它将 return ('#datepick_onBooking')
元素的日期选择器中存在的日期值。如果 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!
在我的网页中,我有一些日期字段,它们被分配了 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/
我想我明白了。这一行:
var int_free_last_date = intFreeLastDate.datepicker('getDate');
使用 .datepicker('getDate')
函数有误。当您这样称呼它时,它会尝试从 HTML 表单元素中获取日期值。例如,如果您调用:
jQuery('#datepick_onBooking').datepicker('getDate');
它将 return ('#datepick_onBooking')
元素的日期选择器中存在的日期值。如果 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!