我正在浏览网络以找到一个javascript函数 可以检查用户输入的日期是当前日期还是未来日期,但我没有找到合适的答案,所以我自己做了。想知道如果这可以用一行代码来实现。
function isfutureDate(value)
{
var now = new Date;
var target = new Date(value);
if (target.getFullYear() > now.getFullYear())
{
return true;
}
else if(target.getFullYear() == now.getFullYear())
{
if (target.getMonth() > now.getMonth()) {
return true;
}
else if(target.getMonth() == now.getMonth())
{
if (target.getDate() >= now.getDate()) {
return true;
}
else
{
return false
}
}
}
else{
return false;
}
}
答案 0 :(得分:21)
您可以比较两个日期,就好像它们是整数:
var now = new Date();
if (before < now) {
// selected date is in the past
}
他们两个都必须是日期。
Google首次搜索会导致:Check if date is in the past Javascript
然而,如果你喜欢编程,这里有一个提示:
享受。
答案 1 :(得分:1)
这是一个仅比较日期而不包括时间的版本。
打字稿
const inFuture = (date: Date) => {
return date.setHours(0,0,0,0) > new Date().setHours(0,0,0,0)
};
ES6
const inFuture = (date) => {
return date.setHours(0,0,0,0) > new Date().setHours(0,0,0,0)
};
答案 2 :(得分:1)
尝试
function IsFutureDate(dateVal) {
var Currentdate = new Date();
dateVal= dateVal.split("/");
var year = Currentdate.getFullYear();
if (year < dateVal[2]) {
return false;//future date
}
else {
return true; //past date
}
}
答案 3 :(得分:0)
试试这个
function isFutureDate(idate){
var today = new Date().getTime(),
idate = idate.split("/");
idate = new Date(idate[2], idate[1] - 1, idate[0]).getTime();
return (today - idate) < 0 ? true : false;
}
演示
console.log(isFutureDate("02/03/2016")); // true
console.log(isFutureDate("01/01/2016")); // false
答案 4 :(得分:0)
ES6版本,可以选择将来使用。
我做了这个小功能,可以留出一些摆动空间(例如,如果传入的数据来自稍快的时钟)。
它需要一个Date
对象和一个toleranceMillis
,即可以接受的秒数(默认为0)。
const isDistantFuture = (date, toleranceMillis = 0) => {
// number of milliseconds tolerance (i.e. 60000 == one minute)
return date.getTime() > Date.now() + toleranceMillis
}
答案 5 :(得分:0)
您可以使用 moment.js 库
let dateToBeCompared = "10/24/2021"; // "DD/MM/YYYY" format
// For past dates
moment(dateToBeCompared, "DD/MM/YYYY").isBefore(moment(new Date(), "DD/MM/YYYY"),
'day')
// For same dates
moment(dateToBeCompared, "DD/MM/YYYY").isSame(moment(new Date(), "DD/MM/YYYY"),
'day')
// For future dates
moment(dateToBeCompared, "DD/MM/YYYY").isAfter(moment(new Date(), "DD/MM/YYYY"),
'day');
还有其他函数,比如 isSameOrAfter() 和 isSameOrBefore() 看看here
答案 6 :(得分:0)
就我而言,我使用 DD-MM-YYYY 格式的日期进行比较,但由于“DD-MM-YYYY”的行为未定义,因此出现错误。所以我将其转换为兼容格式并进行比较。此外,如果您只需要比较日期而不是时间,则需要将时间参数设置为零。
var inputDateVal = "14-06-2021";
if (inputDateVal != null && inputDateVal != '') {
var dateArr = inputDateVal.split("-");
var inputDate = new Date('"' + dateArr[2] + "-" + dateArr[1] + "-" + dateArr[0] + '"').setHours(0, 0, 0, 0);
var toDay = new Date().setHours(0, 0, 0, 0);
if(inputDate > toDay){
console.log("Date is a future date");
}else if(inputDate== toDay){
console.log("Date is equal to today");
}else{
console.log("Date is a past date");
}
}