Innaz Review, Samsung Galaxy, price and specifications, Flash Android, Games For Your Apple, Jailbreak Tool For iOS, IMEI Unlock Method

Kamis, 12 Juli 2007

Java - calculate the difference between two dates

Java - calculate the difference between two dates - In the past, when I started to start blogging, many thoughts disturbed me. I want to have a blog with a nice and interesting look. I am constantly looking for basic tutorials from some web and blogs on the internet. And thankfully, one by one I started to do it, and of course have to go through some confusion process first, but the most important of a blog that is content, yes on the blog Innaz Review we will discuss a lot of information about gadgets that are very in need by you, now we will discuss first about Java - calculate the difference between two dates please refer to the information we will convey until completion:

Articles : Java - calculate the difference between two dates
full Link : Java - calculate the difference between two dates

You can also see our article on:


    Java - calculate the difference between two dates

    Finding the difference between two dates isn't as straightforward as subtracting the two dates and dividing the result by (24 * 60 * 60 * 1000). Infact, its erroneous! 

    Going the 'milliseconds way' will lead to rounding off errors and they become most evident once you have a little thing like "Daylight Savings Time" come into the picture.

    The Correct Way:

    /** Using Calendar - THE CORRECT WAY**/
    //assert: startDate must be before endDate
    public static long daysBetween(Calendar startDate, Calendar endDate) {
    Calendar date = (Calendar) startDate.clone();
    long daysBetween = 0;
    while (date.before(endDate)) {
    date.add(Calendar.DAY_OF_MONTH, 1);
    daysBetween++;
    }
    return daysBetween;
    }
    }

    or more efficiently, (thanks Mauro), if you're using the Gregorian Calendar:
    /** Using Calendar - THE CORRECT (& Faster) WAY**/
    /****Needs testing ...... Anyone?****/
    //assert: startDate must be before endDate
    public static long daysBetween(final Calendar startDate, final Calendar endDate) {
    int MILLIS_IN_DAY = 1000 * 60 * 60 * 24;
    long endInstant = endDate.getTimeInMillis();
    int presumedDays = (int) ((endInstant - startDate.getTimeInMillis()) / MILLIS_IN_DAY);
    Calendar cursor = (Calendar) startDate.clone();
    cursor.add(Calendar.DAY_OF_YEAR, presumedDays);
    long instant = cursor.getTimeInMillis();
    if (instant == endInstant)
    return presumedDays;
    final int step = instant < endInstant ? 1 : -1;
    do {
    cursor.add(Calendar.DAY_OF_MONTH, step);
    presumedDays += step;
    } while (cursor.getTimeInMillis() != endInstant);
    return presumedDays;
    }



    The Nuances:

    Lets take, for example, the difference between the two dates
    03/24/2007 and 03/25/2007 should be 1 day; 

    However, using the millisecond route, you'll get 0 days, if you run this in the UK!


    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.TimeZone;

    public class DateTest {

    public class DateTest {

    static SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy");

    public static void main(String[] args) {

    TimeZone.setDefault(TimeZone.getTimeZone("Europe/London"));

    //diff between these 2 dates should be 1
    Date d1 = new Date("01/01/2007 12:00:00");
    Date d2 = new Date("01/02/2007 12:00:00");

    //diff between these 2 dates should be 1
    Date d3 = new Date("03/24/2007 12:00:00");
    Date d4 = new Date("03/25/2007 12:00:00");

    Calendar cal1 = Calendar.getInstance();cal1.setTime(d1);
    Calendar cal2 = Calendar.getInstance();cal2.setTime(d2);
    Calendar cal3 = Calendar.getInstance();cal3.setTime(d3);
    Calendar cal4 = Calendar.getInstance();cal4.setTime(d4);

    printOutput("Manual ", d1, d2, calculateDays(d1, d2));
    printOutput("Calendar ", d1, d2, daysBetween(cal1, cal2));
    System.out.println("---");
    printOutput("Manual ", d3, d4, calculateDays(d3, d4));
    printOutput("Calendar ", d3, d4, daysBetween(cal3, cal4));
    }


    private static void printOutput(String type, Date d1, Date d2, long result) {
    System.out.println(type+ "- Days between: " + sdf.format(d1)
    + " and " + sdf.format(d2) + " is: " + result);
    }

    /** Manual Method - YIELDS INCORRECT RESULTS - DO NOT USE**/
    /* This method is used to find the no of days between the given dates */
    public static long calculateDays(Date dateEarly, Date dateLater) {
    return (dateLater.getTime() - dateEarly.getTime()) / (24 * 60 * 60 * 1000);
    }

    /** Using Calendar - THE CORRECT WAY**/
    public static long daysBetween(Calendar startDate, Calendar endDate) {
    Calendar date = (Calendar) startDate.clone();
    long daysBetween = 0;
    while (date.before(endDate)) {
    date.add(Calendar.DAY_OF_MONTH, 1);
    daysBetween++;
    }
    return daysBetween;
    }
    }

    OUTPUT:
    Manual - Days between: 01-Jan-2007 and 02-Jan-2007 is: 1
    Calendar - Days between: 01-Jan-2007 and 02-Jan-2007 is: 1
    ---
    Manual - Days between: 24-Mar-2007 and 25-Mar-2007 is: 0
    Calendar - Days between: 24-Mar-2007 and 25-Mar-2007 is: 1



    so much information Java - calculate the difference between two dates

    hopefully Java - calculate the difference between two dates information can provide benefits for you in determining the gadgets that fit your needs in daily life.

    you just read Java - calculate the difference between two dates if you feel this information is useful and want to bookmark or share it please use link https://innaz2.blogspot.com/2007/07/java-calculate-difference-between-two.html if you want more information please search on other pages this blog.

    Tag :
    Share on Facebook
    Share on Twitter
    Share on Google+
    Tags :

    Related : Java - calculate the difference between two dates

      1 komentar: