Java-如何使用Joda Time Jar计算准确的时差

前端之家收集整理的这篇文章主要介绍了Java-如何使用Joda Time Jar计算准确的时差前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我从 http://sourceforge.net/projects/joda-time/files/joda-time/2.2/下载的Joda时间罐有问题.当我使用以下代码段时,我可以得到结果
  1. static void timeDifferencewithJoda() {
  2.  
  3. String dateStart = "01/14/2012 09:29:58";
  4. String dateStop = "01/15/2012 10:31:48";
  5.  
  6. SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
  7.  
  8. Date d1 = null;
  9. Date d2 = null;
  10.  
  11. try {
  12. d1 = format.parse(dateStart);
  13. d2 = format.parse(dateStop);
  14.  
  15. DateTime dt1 = new DateTime(d1);
  16. DateTime dt2 = new DateTime(d2);
  17.  
  18. System.out.print(Days.daysBetween(dt1,dt2).getDays() + " days,");
  19. System.out.print(Hours.hoursBetween(dt1,dt2).getHours() % 24 + " hours,");
  20. System.out.print(Minutes.minutesBetween(dt1,dt2).getMinutes() % 60 + " minutes,");
  21. System.out.print(Seconds.secondsBetween(dt1,dt2).getSeconds() % 60 + " seconds.");
  22.  
  23. } catch (Exception e) {
  24. e.printStackTrace();
  25. }
  26.  
  27. }

结果是

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

但我面对这个时差的冲突.

  1. 01/14/2012 09:29:58
  2.  
  3. 01/15/2012 10:31:48

这两个时间已经宣布,但没有迹象表明像AM或PM这样的时期.即,时间可能是早上或晚上.我如何得到确切的时差?

任何有关这方面的帮助都会很有用.

解决方法

使用 Joda formatter(非AM / PM)
  1. final String dateStart = "01/14/2012 09:29:58";
  2. final String dateStop = "01/15/2012 10:31:48";
  3. final DateTimeFormatter format = DateTimeFormat.forPattern("MM/dd/yyyy HH:mm:ss");
  4. final DateTime dt1 = format.parseDateTime(dateStart);
  5. final DateTime dt2 = format.parseDateTime(dateStop);
  6.  
  7. System.out.print(Days.daysBetween(dt1,");
  8. System.out.print(Hours.hoursBetween(dt1,");
  9. System.out.print(Minutes.minutesBetween(dt1,");
  10. System.out.print(Seconds.secondsBetween(dt1,dt2).getSeconds() % 60 + " seconds.");

使用Joda formatter(带AM / PM)

  1. final String dateStart = "01/14/2012 09:29:58 AM";
  2. final String dateStop = "01/15/2012 10:31:48 PM";
  3. final DateTimeFormatter format = DateTimeFormat.forPattern("MM/dd/yyyy hh:mm:ss a");
  4. final DateTime dt1 = format.parseDateTime(dateStart);
  5. final DateTime dt2 = format.parseDateTime(dateStop);
  6.  
  7. System.out.print(Days.daysBetween(dt1,dt2).getSeconds() % 60 + " seconds.");

Period计算单位

  1. final Period period = new Period(dt1,dt2);
  2. System.out.print(period.getDays() + " days,");
  3. System.out.print(period.getHours() + " hours,");
  4. System.out.print(period.getMinutes() + " minutes,");
  5. System.out.print(period.getSeconds() + " seconds.");

猜你在找的Java相关文章