使用新Date()时返回的日期不正确

时间:2014-05-29 10:29:05

标签: jquery jquery-mobile datebox

将datebox与jquery mobile一起使用时,我希望使用今天的日期设置日期字段的文本框。所以我正在使用

// HTML

<input data-role="datebox" data-options='{"mode": "calbox","dateFieldOrder":["d","m","y"], "useNewStyle":true,"overrideDateFormat": "%d/%m/%Y", "afterToday":true}'  name="startDate" id="startDate" type="date" />

// JS

var defaultPickerValue = new Date();
var today = defaultPickerValue.getDate() + "/" + (defaultPickerValue.getMonth()+1) + "/" + defaultPickerValue.getFullYear();

$('#startDate').val(today);
$('#endDate').val(today);

这会将我的日期字段设置为dd/mm/yy格式的今天日期。

现在计算今天日期与我将在我使用的日历中选择的日期之间的天数差异:

var temp = new Date();
diff = parseInt((new Date($('#startDate').val()) - temp) / ( 1000 * 60 * 60 * 24 ));

但是new Date($('#startDate').val())会返回一些不正确的日期,并且无法正确计算差异。例如,如果我在日历中选择31st may 2014new Date($('#startDate').val())会返回

Tue Jul 05 2016 00:00:00 GMT+0530 (India Standard Time)}**

请帮忙。

2 个答案:

答案 0 :(得分:0)

使用Moment.js进行日期操作/计算/区分。 http://momentjs.com。你不必打得太多。

答案 1 :(得分:0)

如何使用日期框&#39; getTheDate&#39;功能

var temp = new Date();
diff = parseInt(( $('#startDate').datebox('getTheDate').getTime() - temp.getTime() ) / (1000*60*60*24)),10);

如果您手动玩$(&#39;#startDate&#39;)。val(),您可能需要首先刷新,以确保datebox已读取任何新值。

$('#startDate').datebox('refresh');