JAVA Date Utility

hemanthjava 0 Tallied Votes 199 Views Share

JAVA Date Utility

( This program Demonstrates the proper use of Date functionality in common java programming scenarios )

Date and Time

JAVA Date Utility 

( This program Demonstrates the proper use of Date functionality in common java programming scenarios )

Date and Time

 

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 void addToDate(){
		System.out.println("In the ADD Operation");
	//	String DATE_FORMAT = "yyyy-MM-dd";
		String DATE_FORMAT = "dd-MM-yyyy";		//Refer Java DOCS for formats
		java.text.SimpleDateFormat sdf =  new java.text.SimpleDateFormat(DATE_FORMAT);
		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,40);
		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

*/
	
	public static void subToDate(){
		System.out.println("In the SUB Operation");
		String DATE_FORMAT = "dd-MM-yyyy";
		java.text.SimpleDateFormat sdf = new java.text.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(){
		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()+"\t"+ 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() {
		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 getDayofTheDate() {
		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 dat for "+d1+" is "+day);
	    System.out.println();
		System.out.println();
	}
	
	public static void validateAGivenDate() {
		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(){
		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 "+c2.getTime());
		}else if(c1.after(c2)){
			System.out.println("greater than "+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 boolean isLeapYear(int year){
		 if((year%100 != 0) || (year%400 == 0)){
			 return true;
		 }
		 return false;
	}

	public static void main(String args[]){
		addToDate();
		subToDate();
		daysBetween2Dates();	//The "right" way would be to compute the julian day number of both dates and then do the substraction.
		daysInMonth();
		validateAGivenDate();
		compare2Dates();
		getDayofTheDate();
	}
	
}
p.bondam 0 Newbie Poster

hi herman,

i like the code snippet you provided, to unravel the date/time mysteries of java.
you saved me a lot of studying java docs

one little remark - forgive me - is the word substract, that you use... this should be subtract.

but, again, thanks a lot

wiederseh´n,

peter bondam

msg2ajay 0 Newbie Poster

thx a lot u hav coverd mostly...

thx a lot
AJ

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.