| 
1. DATE VALIDATION. | 
| 
 The code given in Table 1 describes a class which can be used to validate dates input using the DDMMYYYY format. For example the date 1-11-200 would be written as --- 1112000. To obtain the "day-month-year" elements from a number N of this format we proceed as follows: 
 Example, given N=1112000 (1-11-200): day = 1112000/1000000 = 1 month = (1112000%1000000)/10000 = 112000/10000 = 11 year = 1112000%10000 = 2000  | 
 Note that, from the code presented in Table 1, the cases in a switch statement do not have to be ordered in any way but can be grouped together in anyway as dictated by the application. The rule for identifying a leap year is as follows: This can be expressed as follows: 
(((yearNumber%4 == 0) && (yearNumber%100 != 0)) 
        || (yearNumber%400 == 0))
A application program that makes use of the DataValidation class is presented in Table 2. (Note that this example is based on a similar example presented by Holmes, p105.)  | 
// DATE VALIDATION
// Frans Coenen
// Tuesday 16 July 1999
// The University of Liverpool, UK
class DateValidation {
    // ------------------ FIELDS ------------------------
    
    static private final int MIN_MONTH_NUMBER = 1;
    static private final int MAX_MONTH_NUMBER = 12;
    static private final int MIN_DAY_NUMBER = 1;
    private int dayNumber;
    private int monthNumber;
    private int yearNumber;
    // ------------------ CONSTRUCTORS ------------------------
    
    /* ------ DATE VALIDATION ------ */	
	
    public DateValidation(int dateCode) {
        dayNumber = dateCode/1000000;
	monthNumber = (dateCode%1000000)/10000;
	yearNumber = dateCode%10000;
        }
    
    // ------------------ METHODS ------------------------
    
    /* ------- CHECK MONTH ------ */
   
    public boolean monthNumberWithinRange() {
    	if ((monthNumber < MIN_MONTH_NUMBER) || 
				(monthNumber > MAX_MONTH_NUMBER)) {
	    System.out.println("ERROR: " + monthNumber + 
	    			" is an invalid month number");
            return(false);
	    }
	else return(true);
	}
    public boolean dayNumberWithinRange() {
    	if  ((dayNumber < MIN_DAY_NUMBER) || 
				(dayNumber > getNumDaysInMonth())) {
	    System.out.println("ERROR: " + dayNumber + 
	    			" is an invalid day number");
            return(false);
	    }
	else return(true);
	}
    	
    /* ------ NUMBER OF DAYS IN MONTH ------ */
    
    private int getNumDaysInMonth() {
	int numDaysInMonth=0;
	
	switch(monthNumber) {
	    case 1: case 3: case 5: case 7: case 8: case 10: case 12:
	        numDaysInMonth = 31;
	        break;
	    case 4: case 6: case 9: case 11: 
	        numDaysInMonth = 30;
	        break;
	    case 2:
	        // Test for leap year
	        if (((yearNumber%4 == 0) && (yearNumber%100 != 0)) || 
						(yearNumber%400 == 0))
	            numDaysInMonth = 29;   
		else numDaysInMonth = 28;
		break;
	    default:
	    	System.out.println("ERROR: Cause unknown");
            }
	   
	// Return
	
	return(numDaysInMonth); 
	}
    }
 | 
Table 1: Date validation class implementation
// DATE VALIDATION APPLICATION
// Frans Coenen
// Wednesday 3 March 1999
// Modified: Saturady 17 September 2005
// University of Liverpool
import java.io.*;
class DateValidationApp {
    // ------------------- FIELDS ------------------------ 
                                
    // Create Scanner class instance
    
    public static Scanner keyboardInput = new Scanner(System.in);
                                         
    // ------------------ METHODS ------------------------  
                                
    /* Main method */
                                
    public static void main(String argv[]) {
	int date;
        DateValidation newDateValidation; 
	                           
        // Input date                                    
	System.out.println("Input a date in DDMMYYYY format");
 	date = keyboardInput.nextInt();
	
	// Create an instance of the class DataValidation	
	newDateValidation = new DateValidation(date);
	
	// Check	
	if (newDateValidation.monthNumberWithinRange()) {
		if (newDateValidation.dayNumberWithinRange())
			System.out.println("Date format OK\n");
		else System.out.println("Date format incorrect\n");
		}
	else System.out.println("Date format incorrect\n"); 
	}
    }
 | 
Table 2: Date validation application program
Created and maintained by Frans Coenen. Last updated 10 February 2015