Date Validation

Validate date inputs

JavaScriptBeginner
JavaScript
// Method 1: Check if valid date
function isValidDate(date) {
    return date instanceof Date && !isNaN(date.getTime());
}

console.log('Valid:', isValidDate(new Date()));
console.log('Invalid:', isValidDate(new Date('invalid')));

// Method 2: Validate date string
function isValidDateString(dateString) {
    const date = new Date(dateString);
    return isValidDate(date) && dateString !== 'Invalid Date';
}

console.log('Valid string:', isValidDateString('2024-01-15'));
console.log('Invalid string:', isValidDateString('not-a-date'));

// Method 3: Validate date format
function isValidDateFormat(dateString, format = 'YYYY-MM-DD') {
    const patterns = {
        'YYYY-MM-DD': /^\d{4}-\d{2}-\d{2}$/,
        'DD/MM/YYYY': /^\d{2}\/\d{2}\/\d{4}$/,
        'MM/DD/YYYY': /^\d{2}\/\d{2}\/\d{4}$/
    };
    
    if (!patterns[format].test(dateString)) {
        return false;
    }
    
    const date = new Date(dateString);
    return isValidDate(date);
}

console.log('Valid format:', isValidDateFormat('2024-01-15', 'YYYY-MM-DD'));

// Method 4: Validate date range
function isDateInRange(date, minDate, maxDate) {
    if (!isValidDate(date)) return false;
    return date >= minDate && date <= maxDate;
}

const checkDate = new Date('2024-01-15');
const min = new Date('2024-01-01');
const max = new Date('2024-12-31');
console.log('In range:', isDateInRange(checkDate, min, max));

// Method 5: Validate future date
function isFutureDate(date) {
    if (!isValidDate(date)) return false;
    return date > new Date();
}

console.log('Future date:', isFutureDate(new Date('2025-01-01')));

// Method 6: Validate past date
function isPastDate(date) {
    if (!isValidDate(date)) return false;
    return date < new Date();
}

console.log('Past date:', isPastDate(new Date('2020-01-01')));

// Method 7: Validate date components
function validateDateComponents(year, month, day) {
    if (year < 1900 || year > 2100) return false;
    if (month < 1 || month > 12) return false;
    if (day < 1 || day > 31) return false;
    
    const date = new Date(year, month - 1, day);
    return date.getFullYear() === year &&
           date.getMonth() === month - 1 &&
           date.getDate() === day;
}

console.log('Valid components:', validateDateComponents(2024, 1, 15));
console.log('Invalid components:', validateDateComponents(2024, 2, 30)); // Feb 30 doesn't exist

Output

Valid: true
Invalid: false
Valid string: true
Invalid string: false
Valid format: true
In range: true
Future date: true
Past date: true
Valid components: true
Invalid components: false

Date validation ensures correct dates.

Validation Methods

  • Check Date object validity
  • Validate date strings
  • Check format patterns
  • Validate components

Common Checks

  • Valid date object
  • Correct format
  • In range
  • Future/past

Component Validation

  • Year range
  • Month (1-12)
  • Day (1-31)
  • Handle leap years

Use Cases

  • Form validation
  • Input sanitization
  • Data integrity
  • Error prevention

Best Practices

  • Validate early
  • Provide clear errors
  • Handle edge cases
  • Test thoroughly