使用Javascript,如何确定日期范围有效?
时间:2020-03-05 18:56:25 来源:igfitidea点击:
在JavaScript中,确定提供的日期是否在有效范围内的最佳方法是什么?
例如,检查用户输入的" requestedDate"是否为下一个有效工作周的一部分。请注意,这不仅仅是检查一个日期是否大于另一个日期,因为有效日期将等于或者大于范围的下限,而小于或者等于范围的上限。
解决方案
回答
因此,如果我了解得很清楚,则需要查看一个日期是否大于另一个日期。
function ValidRange(date1,date2) { return date2.getTime() > date1.getTime(); }
然后,我们需要使用Date.parse来解析从UI获取的字符串,如下所示:
ValidRange(Date.parse('10-10-2008'),Date.parse('11-11-2008'));
有帮助吗?
回答
实际上,这是我在很多工作中就遇到的一个问题,下面的代码是我对该问题的答案。
// checkDateRange - Checks to ensure that the values entered are dates and // are of a valid range. By this, the dates must be no more than the // built-in number of days appart. function checkDateRange(start, end) { // Parse the entries var startDate = Date.parse(start); var endDate = Date.parse(end); // Make sure they are valid if (isNaN(startDate)) { alert("The start date provided is not valid, please enter a valid date."); return false; } if (isNaN(endDate)) { alert("The end date provided is not valid, please enter a valid date."); return false; } // Check the date range, 86400000 is the number of milliseconds in one day var difference = (endDate - startDate) / (86400000 * 7); if (difference < 0) { alert("The start date must come before the end date."); return false; } if (difference <= 1) { alert("The range must be at least seven days apart."); return false; } return true; }
现在要注意此代码,Date.parse
函数应该适用于大多数输入类型,但是已知某些格式存在问题,例如" YYYY MM DD",因此我们应该在使用它之前进行测试。但是,我似乎记得大多数浏览器会根据计算机区域设置来解释给Date.parse的日期字符串。
此外,乘数86400000应该是我们要寻找的天数范围。因此,如果我们要查找至少相隔一周的日期,则应为七个。
回答
var myDate = new Date(2008, 9, 16); // is myDate between Sept 1 and Sept 30? var startDate = new Date(2008, 9, 1); var endDate = new Date(2008, 9, 30); if (startDate < myDate && myDate < endDate) { alert('yes'); // myDate is between startDate and endDate }
我们可以将多种格式传递给Date()构造函数以构造日期。我们还可以使用当前时间构造一个新日期:
var now = new Date();
并在其上设置各种属性:
now.setYear(...); now.setMonth(...); // etc
有关更多详细信息,请参见http://www.javascriptkit.com/jsref/date.shtml或者Google。