Java – how to use joda time jar to calculate accurate time difference

I from http://sourceforge.net/projects/joda-time/files/joda-time/2.2/ There is a problem with the downloaded joda time tank When I use the following code snippet, I can get the result

static void timeDifferencewithJoda()  {

    String dateStart = "01/14/2012 09:29:58";
    String dateStop = "01/15/2012 10:31:48";

    SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");

    Date d1 = null;
    Date d2 = null;

    try {
        d1 = format.parse(dateStart);
        d2 = format.parse(dateStop);

        DateTime dt1 = new DateTime(d1);
        DateTime dt2 = new DateTime(d2);

        System.out.print(Days.daysBetween(dt1,dt2).getDays() + " days,");
        System.out.print(Hours.hoursBetween(dt1,dt2).getHours() % 24 + " hours,");
        System.out.print(Minutes.minutesBetween(dt1,dt2).getMinutes() % 60 + " minutes,");
        System.out.print(Seconds.secondsBetween(dt1,dt2).getSeconds() % 60 + " seconds.");

     } catch (Exception e) {
        e.printStackTrace();
     }

}

The result is

1 days,1 hours,1 minutes,50 seconds.

But I face the conflict of jet lag

01/14/2012 09:29:58

01/15/2012 10:31:48

These two times have been announced, but there is no indication of periods such as am or PM That is, the time may be morning or evening How do I get the exact time difference?

Any help in this regard will be very useful

Solution

Use joda formatter (non AM / PM)

final String dateStart = "01/14/2012 09:29:58";
  final String dateStop = "01/15/2012 10:31:48";
  final DateTimeFormatter format = DateTimeFormat.forPattern("MM/dd/yyyy HH:mm:ss");
  final DateTime dt1 = format.parseDateTime(dateStart);
  final DateTime dt2 = format.parseDateTime(dateStop);

  System.out.print(Days.daysBetween(dt1,");
  System.out.print(Hours.hoursBetween(dt1,");
  System.out.print(Minutes.minutesBetween(dt1,");
  System.out.print(Seconds.secondsBetween(dt1,dt2).getSeconds() % 60 + " seconds.");

Use joda formatter (with AM / PM)

final String dateStart = "01/14/2012 09:29:58 AM";
  final String dateStop = "01/15/2012 10:31:48 PM";
  final DateTimeFormatter format = DateTimeFormat.forPattern("MM/dd/yyyy hh:mm:ss a");
  final DateTime dt1 = format.parseDateTime(dateStart);
  final DateTime dt2 = format.parseDateTime(dateStop);

  System.out.print(Days.daysBetween(dt1,dt2).getSeconds() % 60 + " seconds.");

Calculate the unit in period

final Period period = new Period(dt1,dt2);
  System.out.print(period.getDays() + " days,");
  System.out.print(period.getHours() + " hours,");
  System.out.print(period.getMinutes() + " minutes,");
  System.out.print(period.getSeconds() + " seconds.");
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>