关于验证:如何使用Javascript确保日期范围有效?

关于验证:如何使用Javascript确保日期范围有效?

Using Javascript, how do I make sure a date range is valid?

在JavaScript中,确定提供的日期是否在有效范围内的最佳方法是什么?

例如,检查用户输入requestedDate是否属于下一个有效工作周的一部分。 请注意,这不只是检查一个日期是否大于另一个日期,因为有效日期将等于或大于范围的下限,而小于或等于范围的上限。


这实际上是我在很多工作中就遇到的问题,下面的代码是我对该问题的答案。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// 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应该是您要寻找的天数范围。因此,如果您要查找至少相隔一周的日期,则应为七个。


因此,如果我了解得很清楚,则需要查看一个日期是否大于另一个日期。

1
2
3
4
function ValidRange(date1,date2)
{
   return date2.getTime() > date1.getTime();
}

然后,您需要使用Date.parse来解析从UI获取的字符串,如下所示:

1
ValidRange(Date.parse('10-10-2008'),Date.parse('11-11-2008'));

有帮助吗?


1
2
3
4
5
6
7
8
9
10
11
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()构造函数以构造日期。您还可以使用当前时间构造一个新日期:

1
var now = new Date();

并在其上设置各种属性:

1
2
3
now.setYear(...);
now.setMonth(...);
// etc

有关更多详细信息,请参见http://www.javascriptkit.com/jsref/date.shtml或Google。


推荐阅读

    linux检查硬盘的命令?

    linux检查硬盘的命令?,系统,信息,检测,情况,命令,工具,电脑,地址,设备,硬盘,l

    linux中日期相关命令?

    linux中日期相关命令?,时间,系统,信息,命令,代码,服务,工作,工具,终端,时分,l

    linux设日期时间命令?

    linux设日期时间命令?,时间,系统,命令,国家,环境,数据,电脑,标准,信息,大陆,l

    linux检查挂载命令?

    linux检查挂载命令?,设备,系统,信息,情况,状态,服务,软件,命令,磁盘,网络,lin

    linux使用命令的方法?

    linux使用命令的方法?,系统,信息,工具,标准,数据,命令,左下角,目录,文件夹,

    linux系统改日期命令?

    linux系统改日期命令?,时间,系统,信息,命令,终端,时分,窗口,操作系统,一下

    linux一般检查命令?

    linux一般检查命令?,网络,系统,检测,情况,工作,信息,命令,进程,时间,设备,lin

    检查硬件linux命令?

    检查硬件linux命令?,信息,系统,第一,数据,设备,检测,命令,情况,灵活,实时,如

    linux命令日期修改?

    linux命令日期修改?,时间,系统,电脑,信息,命令,标准,文件,终端,日期,时分,LIN

    linux切换日期命令?

    linux切换日期命令?,时间,系统,信息,命令,城市,终端,时分,日期,窗口,操作系

    linux设置日期命令?

    linux设置日期命令?,时间,系统,标准,命令,信息,大陆,国家,日期,时钟,时区,详

    检查路由命令linux?

    检查路由命令linux?,网络,地址,系统,信息,工具,电脑,时间,通信,服务,命令,lin

    linux数据库检查命令?

    linux数据库检查命令?,服务,状态,地址,位置,系统,信息,命令,工作,情况,密码,

    linux分区检查命令是?

    linux分区检查命令是?,系统,设备,工具,管理,情况,信息,检测,分区,密码,单位,

    linux验证分区命令?

    linux验证分区命令?,系统,工具,情况,分区,命令,状态,网络,密码,检测,首次,在L

    linux修改日期命令?

    linux修改日期命令?,时间,系统,命令,信息,工具,工作,服务,代码,日期,终端,lin

    linux检查流量的命令?

    linux检查流量的命令?,工具,系统,实时,状态,网络,信息,数据,密码,地址,流量,l

    linux打印日期命令?

    linux打印日期命令?,时间,系统,工作,命令,标准,环境,档案,信息,设备,位置,Lin

    linux基本命令日期?

    linux基本命令日期?,时间,系统,命令,管理,工作,网络,工具,基础,标准,环境,详

    linux检查更新命令是?

    linux检查更新命令是?,工作,软件,地址,系统,信息,管理,命令,目录,最新,标准,l