Java Date Utility

JAVA DATE API

java.util.
Class Date

java.lang.Object
extended by java.util.Date

All Implemented Interfaces:
Cloneable, Comparable, Serializable

Direct Known Subclasses:
Date, Time, Timestamp

public class Date extends Object
implements Serializable, Cloneable, Comparable

The class Date represents a specific instant in time, with millisecond precision.

JAVA DATE SOURCE CODE

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class DateUtility {

	/* Add Day/Month/Year to a Date
	 add() is used to add  values to a Calendar object.
	 You specify which Calendar field is to be affected by the operation
	 (Calendar.YEAR, Calendar.MONTH, Calendar.DATE).
	 */

	public static final String DATE_FORMAT = "dd-MM-yyyy";
	//See Java DOCS for different date formats
	//	public static final String DATE_FORMAT = "yyyy-MM-dd";

	public static void addToDate() {
		System.out.println("1. Add to a Date Operation\n");
		SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
		//Gets a calendar using the default time zone and locale.
		Calendar c1 = Calendar.getInstance();
		Date d1 = new Date();
		//		System.out.println("Todays date in Calendar Format : "+c1);
		System.out.println("c1.getTime() : " + c1.getTime());
		System.out.println("c1.get(Calendar.YEAR): "+ c1.get(Calendar.YEAR));
		System.out.println("Todays date in Date Format : " + d1);
		c1.set(1999, 0, 20); //(year,month,date)
		System.out.println("c1.set(1999,0 ,20) : " + c1.getTime());
		c1.add(Calendar.DATE, 20);
		System.out.println("Date + 20 days is : "+ sdf.format(c1.getTime()));
		System.out.println();
		System.out.println("-------------------------------------");
	}

	/*Substract Day/Month/Year to a Date

	 roll() is used to substract values to a Calendar object.
	 You specify which Calendar field is to be affected by the operation
	 (Calendar.YEAR, Calendar.MONTH, Calendar.DATE). 	 

	 Note: To substract, simply use a negative argument.
	 roll() does the same thing except you specify if you want to roll up (add 1)
	 or roll down (substract 1) to the specified Calendar field. The operation only
	 affects the specified field while add() adjusts other Calendar fields.
	 See the following example, roll() makes january rolls to december in the same
	 year while add() substract the YEAR field for the correct result. Hence add()
	 is preferred even for subtraction by using a negative element.

	 */

	public static void subToDate() {

		System.out.println("2. Subtract to a date Operation\n");
		SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
		Calendar c1 = Calendar.getInstance();
		c1.set(1999, 0, 20);
		System.out.println("Date is : " + sdf.format(c1.getTime()));
		// roll down, substract 1 month
		c1.roll(Calendar.MONTH, false);
		System.out.println("Date roll down 1 month : "+ sdf.format(c1.getTime()));
		c1.set(1999, 0, 20);
		System.out.println("Date is : " + sdf.format(c1.getTime()));
		c1.add(Calendar.MONTH, -1);
		// substract 1 month
		System.out.println("Date minus 1 month : "+ sdf.format(c1.getTime()));
		System.out.println();
		System.out.println("-------------------------------------");
	}

	public static void daysBetween2Dates() {

		System.out.println("3. No of Days between 2 dates\n");
		Calendar c1 = Calendar.getInstance(); //new GregorianCalendar();
		Calendar c2 = Calendar.getInstance(); //new GregorianCalendar();
		c1.set(1999, 0, 20);
		c2.set(1999, 0, 22);
		System.out.println("Days Between " + c1.getTime() + " and "
				+ c2.getTime() + " is");
		System.out.println((c2.getTime().getTime() - c1.getTime()
				.getTime())	/ (24 * 3600 * 1000));
		System.out.println();
		System.out.println("-------------------------------------");
	}

	public static void daysInMonth() {

		System.out.println("4. No of Days in a month for a given date\n");
		Calendar c1 = Calendar.getInstance(); // new GregorianCalendar();
		c1.set(1999, 6, 20);
		int year = c1.get(Calendar.YEAR);
		int month = c1.get(Calendar.MONTH);
		// int days = c1.get(Calendar.DATE);
		int[] daysInMonths = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30,31 };
		daysInMonths[1] += DateUtility.isLeapYear(year) ? 1 : 0;
		System.out.println("Days in " + month + "th month for year" + year
				+ "is " + daysInMonths[c1.get(Calendar.MONTH)]);
		System.out.println();
		System.out.println("-------------------------------------");
	}

	public static void validateAGivenDate() {

		System.out.println("5. Validate a given date\n");
		String dt = "20011223";
		String invalidDt = "20031315";
		String dateformat = "yyyyMMdd";
		Date dt1 = null, dt2 = null;
		try {
			SimpleDateFormat sdf = new SimpleDateFormat(dateformat);
			sdf.setLenient(false);
			dt1 = sdf.parse(dt);
			dt2 = sdf.parse(invalidDt);
			System.out.println("Date is ok = " + dt1 + "(" + dt + ")");
		} catch (ParseException e) {
			System.out.println(e.getMessage());
		} catch (IllegalArgumentException e) {
			System.out.println("Invalid date");
		}
		System.out.println();
		System.out.println("-------------------------------------");
	}

	public static void compare2Dates() {

		System.out.println("6. Comparision of 2 dates\n");
		SimpleDateFormat fm = new SimpleDateFormat("dd-MM-yyyy");
		Calendar c1 = Calendar.getInstance();
		Calendar c2 = Calendar.getInstance();
		c1.set(2000, 02, 15);
		c2.set(2001, 02, 15);
		System.out.print(fm.format(c1.getTime()) + " is ");
		if (c1.before(c2)) {
			System.out.println("less than " + fm.format(c2.getTime()));
		} else if (c1.after(c2)) {
			System.out.println("greater than " + fm.format(c2.getTime()));
		} else if (c1.equals(c2)) {
			System.out.println("is equal to " + fm.format(c2.getTime()));
		}
		System.out.println();
		System.out.println("-------------------------------------");
	}

	public static void getDayofTheDate() {

		System.out.println("7. Get the day for a given date\n");
		Date d1 = new Date();
		String day = null;
		DateFormat f = new SimpleDateFormat("EEEE");
		try {
			day = f.format(d1);
		} catch (Exception e) {
			e.printStackTrace();
		}
		System.out.println("The day for " + d1 + " is " + day);
		System.out.println();
		System.out.println("-------------------------------------");
	}

	//Utility Method to find whether an Year is a Leap year or Not
	public static boolean isLeapYear(int year) {

		if ((year % 100 != 0) || (year % 400 == 0)) {
			return true;
		}
		return false;
	}

	public static void main(String args[]) {
		addToDate(); //Add day, month or year to a date field.
		subToDate(); //Subtract day, month or year to a date field.
		daysBetween2Dates();
		//The "right" way would be to compute the Julian day number of
		//both dates and then do the subtraction.
		daysInMonth();//Find the number of days in a month for a date
		validateAGivenDate();//Check whether the date format is proper
		compare2Dates(); //Compare 2 dates
		getDayofTheDate();
	}
}

 

Output

1. Add to a Date Operation

c1.getTime() : Sat Mar 31 10:47:54 IST 2007
c1.get(Calendar.YEAR): 2007
Todays date in Date Format : Sat Mar 31 10:47:54 IST 2007
c1.set(1999,0 ,20) : Wed Jan 20 10:47:54 IST 1999
Date + 20 days is : 09-02-1999

——————————————————-
2. Subtract to a date Operation

Date is : 20-01-1999
Date roll down 1 month : 20-12-1999
Date is : 20-01-1999
Date minus 1 month : 20-12-1998

——————————————————-
3. No of Days between 2 dates

Days Between Wed Jan 20 10:47:54 IST 1999 and Fri Jan 22 10:47:54 IST 1999 is
2

——————————————————-
4. No of Days in a month for a given date

Days in 6th month for year 1999 is 31

——————————————————-
5. Validate a given date

Unparseable date: “20031315”

——————————————————-
6. Comparision of 2 dates

15-03-2000 is less than 15-03-2001

——————————————————-
7. Get the day for a given date

The day for Sat Mar 31 10:47:54 IST 2007 is Saturday

——————————————————-

Download Date Utility Source Code

What is the GregorianCalendar class?

The GregorianCalendar provides support for traditional Western calendars.

What is the SimpleTimeZone class?

The SimpleTimeZone class provides support for a Gregorian calendar.

Like us on Facebook