有人能提出一种方法来比较两个大于、小于和过去不使用JavaScript的日期的值吗?值将来自文本框。


当前回答

比较两个日期的一种方法是使用dates.js库。

Date.compare(Date-date1,Date-date2)方法,返回一个数字,表示以下结果之一:

-1=日期1小于日期2。0=值相等。1=日期1大于日期2。

其他回答

Date对象将执行您想要的操作-为每个日期构造一个,然后使用>、<、<=或>=对它们进行比较。

==,!=,==,和!==运算符要求您使用date.getTime(),如中所示

var d1 = new Date();
var d2 = new Date(d1);
var same = d1.getTime() === d2.getTime();
var notSame = d1.getTime() !== d2.getTime();

明确地说,直接检查日期对象是否相等是行不通的

var d1 = new Date();
var d2 = new Date(d1);

console.log(d1 == d2);   // prints false (wrong!) 
console.log(d1 === d2);  // prints false (wrong!)
console.log(d1 != d2);   // prints true  (wrong!)
console.log(d1 !== d2);  // prints true  (wrong!)
console.log(d1.getTime() === d2.getTime()); // prints true (correct)

不过,我建议您使用下拉列表或类似的受约束的日期输入形式,而不是文本框,以免您陷入输入验证地狱。


对于好奇的date.getTime()文档:

返回指定日期的数值,即自1970年1月1日00:00:00 UTC以来的毫秒数。(之前的时间返回负值。)

日期比较:

var str1  = document.getElementById("Fromdate").value;
var str2  = document.getElementById("Todate").value;
var dt1   = parseInt(str1.substring(0,2),10); 
var mon1  = parseInt(str1.substring(3,5),10);
var yr1   = parseInt(str1.substring(6,10),10); 
var dt2   = parseInt(str2.substring(0,2),10); 
var mon2  = parseInt(str2.substring(3,5),10); 
var yr2   = parseInt(str2.substring(6,10),10); 
var date1 = new Date(yr1, mon1, dt1); 
var date2 = new Date(yr2, mon2, dt2); 

if(date2 < date1)
{
   alert("To date cannot be greater than from date");
   return false; 
} 
else 
{ 
   alert("Submitting ...");
   document.form1.submit(); 
} 

在JavaScript中比较日期非常简单。。。JavaScript内置了日期比较系统,因此比较起来非常简单。。。

只需按照以下步骤比较两个日期值,例如,您有两个输入,每个输入都有一个字符串中的日期值,您可以比较它们。。。

1.您有两个从输入中获得的字符串值,您希望对它们进行比较,如下所示:

var date1 = '01/12/2018';
var date2 = '12/12/2018';

2.它们需要是日期对象,以便作为日期值进行比较,所以只需使用new Date()将它们转换为日期,我只需重新分配它们以简化解释,但您可以按照自己的意愿进行操作:

date1 = new Date(date1);
date2 = new Date(date2);

3.现在只需使用><>=<=

date1 > date2;  //false
date1 < date2;  //true
date1 >= date2; //false
date1 <= date2; //true

注意时区

javascript日期没有时区的概念。这是一个时刻(从大纪元开始计时),具有方便的函数,用于在“本地”时区中转换字符串。如果您想使用日期对象处理日期,正如这里的每个人所做的那样,您希望您的日期在所讨论的日期开始时表示UTC午夜。这是一个常见且必要的惯例,允许您处理日期,而不考虑创建日期的季节或时区。因此,您需要非常警惕地管理时区的概念,尤其是在创建午夜UTC日期对象时。

大多数时候,您都希望您的日期反映用户的时区。如果今天是你的生日,请单击。新西兰和美国的用户同时点击并获得不同的日期。在这种情况下,这样做。。。

// create a date (utc midnight) reflecting the value of myDate and the environment's timezone offset.
new Date(Date.UTC(myDate.getFullYear(),myDate.getMonth(), myDate.getDate()));

有时,国际可比性胜过本地准确性。在这种情况下,这样做。。。

// the date in London of a moment in time. Device timezone is ignored.
new Date(Date.UTC(myDate.getUTCYear(), myDate.getyUTCMonth(), myDate.getUTCDate()));

现在你可以像其他答案所建议的那样直接比较你的约会对象。

在创建时注意管理时区,在转换回字符串表示形式时还需要确保将时区排除在外。因此,您可以安全地使用。。。

到ISOString()getUTCxxx()getTime()//返回一个没有时间或时区的数字。.toLocaleDateString(“fr”,{timezone:“UTC”})//任何您想要的语言环境,但始终是UTC。

完全避免其他一切,特别是。。。

getYear()、getMonth()和getDate()

注意-仅比较日期部分:

当我们在javascript中比较两个日期时。这需要数小时、数分钟和数秒的时间。。因此,如果我们只需要比较日期,这是一种方法:

var date1= new Date("01/01/2014").setHours(0,0,0,0);

var date2= new Date("01/01/2014").setHours(0,0,0,0);

现在:如果date1.valueOf()>date2.valueOf。