【问题标题】:Do calculations with bootstrap datepicker使用引导日期选择器进行计算
【发布时间】:2015-01-22 15:59:57
【问题描述】:

在我的网页中,我有一些日期字段,它们被分配了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();

为了比较日期,它们必须是时间值。为此

  1. .datepicker('getDate')
  2. 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/

【问题讨论】:

  • 哪一行导致了这个错误?你能做一个JSFiddle给我们作为例子吗?
  • 线路是var int_free_last_date = intFreeLastDate.datepicker('getDate');
  • 如果在该行上方调用console.log(intFreeLastDate) 会返回什么?
  • 返回所需格式的日期

标签: twitter-bootstrap datepicker bootstrap-datepicker


【解决方案1】:

我想我看到了这个问题。这一行:

var int_free_last_date = intFreeLastDate.datepicker('getDate');

使用.datepicker('getDate') 函数错误。当您这样调用它时,它会尝试从 HTML 表单元素中获取日期值。例如,如果您调用:

jQuery('#datepick_onBooking').datepicker('getDate');

它将返回('#datepick_onBooking') 元素的日期选择器中存在的日期值。如果intLastFreeDate 类似于01-02-2015,则该行相当于:

var int_free_last_date = 01-02-2015.datepicker('getDate');

正如您想象的那样,01-02-2015undefined 不同。

我认为您已接近解决方案,您只需将已经存在的日期格式化为时间值并进行比较:

var on_BookingDateTime = on_BookingDate.getTime();
var lastFreeDateTime = intLastFreeDate.getTime();
// Compare em however you would.

希望对您有所帮助!

编辑

由于on_BookingDateintFreeLastDate 都是有效的日期字符串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!

JSFiddle Update

【讨论】:

  • 要使用.getTime();,我们必须使用.datepicker('getDate')。那么只有我们可以使用.getTime();。不是吗?
  • 嗯。好的,我需要知道一些事情,onBookingDateintLastFreeDate 的确切值是多少?
  • onBookingDate 是 01-01-205 和 intFreeLastDate 是 01-09-2015。我添加了 js 小提琴
  • 好的,很好。我将编辑它如何在这些日期使用.getTime() :)
猜你喜欢
  • 2016-04-15
  • 1970-01-01
  • 2012-11-02
  • 1970-01-01
  • 1970-01-01
  • 2014-04-05
  • 2013-09-02
相关资源
最近更新 更多