我有一个 id 为“date_trans”的表单输入。该日期输入的格式(经过服务器端验证)可以是以下任何一种:
但是,在发布表单之前,我想检查 date_trans 字段的日期是否等于今天的日期。如果获取的日期是客户端的日期(即它使用js)就可以了,因为我也在服务器上运行了双重检查。
我完全不知道如何在 jQuery 或普通的旧 JavaScript 中进行日期比较。如果有帮助,我正在使用 jquery datepicker
纯 JS 中的简单日期比较就足够了:
// Create date from input value
var inputDate = new Date("11/21/2011");
// Get today's date
var todaysDate = new Date();
// call setHours to take the time out of the comparison
if(inputDate.setHours(0,0,0,0) == todaysDate.setHours(0,0,0,0)) {
// Date equals today's date
}
为了完整起见,取自此解决方案:
您可以使用 toDateString:
var today = new Date();
var isToday = (today.toDateString() == otherDate.toDateString());
没有库依赖项,并且看起来比之前答案中显示的“setHours()”方法更干净,恕我直言
尝试使用 moment.js
moment('dd/mm/yyyy').isSame(Date.now(), 'day');
如果需要,您可以将“日”字符串替换为“年、月、分”。
function sameDay( d1, d2 ){
return d1.getUTCFullYear() == d2.getUTCFullYear() &&
d1.getUTCMonth() == d2.getUTCMonth() &&
d1.getUTCDate() == d2.getUTCDate();
}
if (sameDay( new Date(userString), new Date)){
// ...
}
使用 UTC* 方法可确保不同时区中与同一全球日期匹配的两个等效日期相同。 (如果您直接解析两个日期则没有必要,但值得考虑的一件好事。)
只需在您的 javaScript 中使用以下代码:
if(new Date(hireDate).getTime() > new Date().getTime())
{
//Date greater than today's date
}
根据您的要求更改条件。这里有一个比较链接在java脚本中比较
以下解决方案将时间戳整数除以小时、分钟、秒、毫秒的值进行比较。
var reducedToDay = function(date){return ~~(date.getTime()/(1000*60*60*24));};
return reducedToDay(date1) == reducedToDay(date2)
波形符截断除法结果(参见这篇关于整数除法的文章)
试试这个
// method to check date is less than today date
isLessDate(schedule_date : any){
var _schedule_date = new Date(schedule_date);
var date = new Date();
var transformDate = this.datePipe.transform(date, 'yyyy-MM-dd');
var _today_date = new Date(''+transformDate);
if(_schedule_date < _today_date){
return 'small'
}
else if(_schedule_date > _today_date){
return 'big'
}
else {
return 'same'
}
}
您可以使用此函数来计算这个值(86_400_000 是每天的毫秒数)。
function isSameDay(date1, date2) {
return Math.abs(date1.getTime() - date2.getTime()) < 86_400_000
&& date1.getDate() === date2.getDate();
}
isSameDay(new Date("2011-11-21"), new Date("2011-11-21")); // true
isSameDay(new Date("2011-11-21"), new Date("2011-11-22")); // false
Date.js 是一个用于操作和格式化日期的便捷库。在这种情况下它可以提供帮助。
typescript
中比较日期的最佳方法和推荐方法是:
var today = new Date().getTime();
var reqDateVar = new Date(somedate).getTime();
if(today === reqDateVar){
// NOW
} else {
// Some other time
}
TodayDate = new Date();
if (TodayDate > AnotherDate) {} else{}
< = also works, Although with =, it might have to match the milliseconds.
有一个更简单的解决方案
if (inputDate.getDate() === todayDate.getDate()) {
// do stuff
}
这样你就不会失去
inputDate
(如果有的话)的时间