【问题标题】:Bootstrap (Twitter) Datepicker Difference Calculation Returns "NaN"Bootstrap (Twitter) Datepicker 差异计算返回“NaN”
【发布时间】:2013-07-05 14:44:17
【问题描述】:

以下代码在更改日期返回“NaN”(非数字)值。我认为 Flow 是正确的,但我不知道它是如何返回 NaN 的。

$(function() {    
$('.datepicker').datepicker({format: "yyyy-mm-dd"});

    var calculateDuration = function() {
    var start_date = $('#start_date').datepicker('getDate');
    var end_date = $('#end_date').datepicker('getDate');
    document.getElementById('reservation_duration').value = (Number(end_date) - Number(start_date)) / 86400000;
    }

$('#end_date').change(calculateDuration);
$('#start_date').change(calculateDuration);

});

这是日期选择器:http://www.eyecon.ro/bootstrap-datepicker/

【问题讨论】:

  • 大声笑,抱歉弄错了
  • @PiLHA 哈哈,不用担心! :)

标签: javascript jquery twitter-bootstrap datepicker


【解决方案1】:

.datepicker('getDate') 不是有效的方法。您可能只需要该字段的值,例如 $('#start_date').val()

更新 您仍然需要将您的字段值转换为适合算术的格式:

var startDate = new Date($('#start_date').val());
var endDate = new Date($('#end_date').val());
var delta = endDate - startDate;

【讨论】:

  • 那么您需要将字符串转换为合适的值。只需按您尝试的方式投射日期戳,例如07/05/2013,就会返回NaNconsole.log(Number('07/05/2013'))
  • 你在金钱上是绝对正确的。我已在此线程中添加了工作代码作为答案。 (stackoverflow.com/a/17492274/1589850) 非常感谢! :)
【解决方案2】:

听从了安德烈·迪翁的建议并成功了!

$(function() {    
    $('.datepicker').datepicker({format: "yyyy-mm-dd"});

var calculateDuration = function() {
    var startDate = new Date($('#start_date').val());
    var endDate = new Date($('#end_date').val());
    var diff = endDate - startDate;
    document.getElementById('reservation_duration').value = (Number(diff) / 86400000) +1;
}

$('#end_date').change(calculateDuration);
$('#start_date').change(calculateDuration);

});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多