有人能提出一种方法来比较两个大于、小于和过去不使用JavaScript的日期的值吗?值将来自文本框。
当前回答
在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
其他回答
from_date ='10-07-2012';
to_date = '05-05-2012';
var fromdate = from_date.split('-');
from_date = new Date();
from_date.setFullYear(fromdate[2],fromdate[1]-1,fromdate[0]);
var todate = to_date.split('-');
to_date = new Date();
to_date.setFullYear(todate[2],todate[1]-1,todate[0]);
if (from_date > to_date )
{
alert("Invalid Date Range!\nStart Date cannot be after End Date!")
return false;
}
使用此代码使用javascript比较日期。
谢谢D.吉普
以上给出的所有答案只解决了一件事:比较两个日期。
事实上,它们似乎是这个问题的答案,但其中很大一部分是缺失的:
如果我想检查一个人是否满18岁怎么办?
不幸的是,上面给出的答案中没有一个能够回答这个问题。
例如,当前时间(大约是我开始键入这些单词的时间)是2020年1月31日星期五10:41:04 GMT-0600(中部标准时间),而客户将其出生日期输入为“01/31/2002”。
如果我们使用“365天/年”,即“31536000000”毫秒,我们将得到以下结果:
let currentTime = new Date();
let customerTime = new Date(2002, 1, 31);
let age = (currentTime.getTime() - customerTime.getTime()) / 31536000000
console.log("age: ", age);
打印如下:
age: 17.92724710838407
但从法律上讲,这位客户已经18岁了。即使他输入“01/30/2002”,结果仍然是
age: 17.930039743467784
其小于18。系统将报告“未成年”错误。
“01/29/2002”、“01/28/2002”和“01/27/2002”。。。“01/05/2002”,直到“01/04/2002”。
这样的系统只会杀死所有出生在18岁0天到18岁26天之间的客户,因为他们在法律上是18岁,而系统显示“未成年”。
以下是对类似问题的回答:
invalidBirthDate: 'Invalid date. YEAR cannot be before 1900.',
invalidAge: 'Invalid age. AGE cannot be less than 18.',
public static birthDateValidator(control: any): any {
const val = control.value;
if (val != null) {
const slashSplit = val.split('-');
if (slashSplit.length === 3) {
const customerYear = parseInt(slashSplit[0], 10);
const customerMonth = parseInt(slashSplit[1], 10);
const customerDate = parseInt(slashSplit[2], 10);
if (customerYear < 1900) {
return { invalidBirthDate: true };
} else {
const currentTime = new Date();
const currentYear = currentTime.getFullYear();
const currentMonth = currentTime.getMonth() + 1;
const currentDate = currentTime.getDate();
if (currentYear - customerYear < 18) {
return { invalidAge: true };
} else if (
currentYear - customerYear === 18 &&
currentMonth - customerMonth < 0) {
return { invalidAge: true };
} else if (
currentYear - customerYear === 18 &&
currentMonth - customerMonth === 0 &&
currentDate - customerDate < 0) {
return { invalidAge: true };
} else {
return null;
}
}
}
}
}
If you are using **REACT OR REACT NATIVE**, use this and it will work (Working like charm)
如果两个日期相同,则返回TRUE,否则返回FALSE
const compareDate = (dateVal1, dateVal2) => {
if (dateVal1.valueOf() === dateVal2.valueOf()){
return true;
}
else { return false;}
}
注意-仅比较日期部分:
当我们在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。
简单的方法是,
var first = '2012-11-21';
var second = '2012-11-03';
if (new Date(first) > new Date(second) {
.....
}