Minggu, 15 Juni 2014

How to add, subtract days, months, years, hours from Date and Time in Java




Adding days, hours, month or years to dates is a common task in Java. java.util.Calendar can be
used to perform Date and Time arithmetic in Java. Calendar class not only
provides date manipulation but it also support time manipulation i.e. you can
add, subtract hours, minutes and seconds from current time. Calendar class
automatically handles date transition or month transition for example if you
ask date after 30 days it will return you date based on whether current month
is 30 or 31 days long. Same is true in case of adding and subtracting years,
Calendar takes care whether current or following year is a leap
year
or not. For example 2012 is a leap year and it has February with 29
days, if you ask Calendar day before 365 it will return 24th July (assuming
current date 23rd July) which shows it take care of leap year. By
the way there are couple of more date and time related articles e.g. How
to find current date and time in Java
and How
to convert Date to String in Java
. If you haven’t read them already, It’s
worth checking to know more about Date and Time in Java.








How to add or subtract days, month and year
from date in Java



How to add or substract days, month and year to date in JavaCalendar.DATE field can be used to add or
subtract dates
in Java
. Positive value passed into
add() method
will add days into date while negative values will subtract days from
date in Java. Similarly
Calendar.MONTH can be used to add and subtract
months from date in Java. You can use this to get date after 2 months or before
2 months. Just keep in mind that
Calendar.MONTH start from
zero. Same
add() method can be used to both add or subtract months
in Java
. Once again difference will only be on whether value is positive or
negative.
Calendar.YEAR can be used to add or subtract
year from current date in the same fashion we added days and month into date.





How to add or subtract hour, minutes and
seconds from Time in Java



Calendar class not only provides Date information but also gives Time
related information. You can get hours, minutes and seconds from
java.util.Calendar instance.
Similarly you can use same
add() method for adding or subtracting
hours, minutes and seconds from current time in Java. Just need to careful
whether you are using
Calendar.HOUR or Calendar.HOUR_OF_DAY because
former represent time in AM and PM while later represent time in 24 hours time.
Calendar.MINUTES can be used for adding or subtracting minutes from
Date.





Important points related to Calendar class
in Java



1) Calendar has overloaded
getInstance() method which can return Calendar instance in either
default timezone and locale or specified timezone or locale.





2) Calendar has different fields to return specifics from Calendar like Calendar.DATE, Calendar.MONTH, Calendar.YEAR
etc you can check Javadoc for full list.





3) Calendar.MONTH return zero for first month, keep
in mind while using value returned by
Calendar.get(Calendar.MONTH)





4) Calendar.HOUR_OF_DAY represent time in 24 hours
format. Calendar also support
AM or PM format.






import java.util.Calendar;

import java.util.TimeZone;



/**

 * Java program to add, subtract dates, month and year using Calendar in
Java.


 * Apart from
date, Calendar class also provide time related information and can


 * be used to
add and subtract hours, minutes and seconds from time in Java.


 *

 * @author Javin Paul

 */


public class
DateAndTimeArithmetic {

 

    public static void
main(String args[]){

   

        //Java calendar in
default timezone and default locale


        Calendar cal = Calendar.getInstance();

        cal.setTimeZone(TimeZone.getTimeZone("GMT"));

     

        System.out.println("current date: " + getDate(cal));

     

     

        //adding days into
Date in Java


        cal.add(Calendar.DATE,
2);

        System.out.println("date after 2 days : " + getDate(cal));

     

        //subtracting days
from Date in Java


        cal.add(Calendar.DATE,
-2);

        System.out.println("date before 2 days : " + getDate(cal));

     

     

       //adding moths into
Date


        cal.add(Calendar.MONTH,
5);

        System.out.println("date after 5 months : " + getDate(cal));

     

        //subtracting
months from Date


        cal.add(Calendar.MONTH,
-5);

        System.out.println("date before 5 months : " + getDate(cal));

     

        //adding year into
Date


        cal.add(Calendar.YEAR,
5);

        System.out.println("date after 5 years : " + getDate(cal));

     

        //subtracting year
from Date


        cal.add(Calendar.YEAR,
-5);

        System.out.println("date before 5 years : " + getDate(cal));

     

        //date after 200
days from now, takes care of how many days are in month


        //for years calendar
takes care of leap year as well


        cal.add(Calendar.DATE,
200);

        System.out.println("date after 200 days from today : " +
getDate(cal));

     

        System.out.println("current time in GMT: " + getTime(cal));

     

        //adding hours into
Date


        cal.add(Calendar.HOUR_OF_DAY,
3);

        System.out.println("Time after 3 hours : " + getTime(cal));

     

        //subtracting hours
from Date time


        cal.add(Calendar.HOUR_OF_DAY,
-3);

        System.out.println("Time before 3 hours : " + getTime(cal));

     

        //adding minutes
into Date time


        cal.add(Calendar.MINUTE,
3);

        System.out.println("Time after 3 minutes : " + getTime(cal));

     

        //subtracting
minutes from Date time


        cal.add(Calendar.HOUR_OF_DAY,
-3);

        System.out.println("Time before 3 minuets : " + getTime(cal));

     

    }

 

    /**

     *

     * @return current Date from Calendar in dd/MM/yyyy format

     * adding 1 into month because Calendar month starts from
zero

     */


    public static String getDate(Calendar cal){

        return "" + cal.get(Calendar.DATE) +"/" +

                (cal.get(Calendar.MONTH)+1) + "/"
+ cal.get(Calendar.YEAR);

    }

 

    /**

     *

     * @return current Date from Calendar in HH:mm:SS format

     *

     * adding 1 into month because Calendar month starts from
zero

     */


    public static String getTime(Calendar cal){

        return "" + cal.get(Calendar.HOUR_OF_DAY) +":" +

                (cal.get(Calendar.MINUTE)) + ":"
+ cal.get(Calendar.SECOND);

    }

 

}



Output:

current date: 23/7/2012

date after 2 days : 25/7/2012

date before 2 days : 23/7/2012

date after 5 months : 23/12/2012

date before 5 months : 23/7/2012

date after 5 years : 23/7/2017

date before 5 years : 23/7/2012

date after 200 days from today : 8/2/2013

current time in GMT: 6:12:53

Time after 3 hours : 9:12:53

Time before 3 hours : 6:12:53

Time after 3 minutes : 6:15:53

Time before 3 minuets : 3:15:53






That’s all on How to add days, month and year on Date in Java. We have
also seen how to add hours, minutes and seconds into time using
java.util.Calendar class. Two
points which is worth remembering is that month starts from zero and time can
be represented in either 24 hours format or AM-PM format.





Other Date and Time tutorials from Javarevisited Blog
































Source:http://javarevisited.blogspot.com/2012/12/how-to-add-subtract-days-months-years-to-date-time-java.html

Tidak ada komentar:

Posting Komentar