日期:2014-05-16  浏览次数:20451 次

这样的算法用js怎么算的?
有这样的需求,开始时间txtFrom与结束时间txtEnd,它们都是日历的功能,可让用户选择时间,现在想用js实现,当用户选择开始时间txtFrom为(2014-02-14),选择结束时间txtEnd为(2014-03-13),因为是跨月份选择,今年的2月份共28天,所以总天数只能为28天(不能超过28天),超过的给出提示;当选择2014-03-01至2014-04-02,就以3月份的天数为准,不能超过此天数,超过的给出提示。

以上的逻辑js怎么实现的。谢谢!!
------解决方案--------------------
无论如何,在 JS 中,月份值加一,天数不变,刚好是增加当月的天数,即使是5月31号,当将月份变为6月后,实际日期会变成7月1日,所以你只要将月份加一比较结束日期就可以了。


var startDate = '2013-5-31';
var endDate = '2013-7-2';

var datePart = startDate.split('-');
var maxEndDate = new Date(datePart[0], datePart[1], datePart[2]); // JS 中,月份为 0~11,所以这里就相当于月份加一了

datePart = endDate.split('-');
endDate = new Date(datePart[0], datePart[1] - 1, datePart[2]);

if(maxEndDate < endDate)
alert('超过当月天数');


另外,计算当月天数可以用:

var date = new Date(2014, 2, 0);
var curMonthDays = date.getDate(); // 2 月天数


计算两个日期相差多少天

var start = Date.parse('2014-3-6');
var end = Date.parse('2014-5-14');
var diffDays = (end - start) / (24 * 3600 * 1000);