加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-14 17:43:06 所属栏目:Java 来源:网络整理
导读:我从 http://sourceforge.net/projects/joda-time/files/joda-time/2.2/下载的Joda时间罐有问题.当我使用以下代码段时,我可以得到结果 static void timeDifferencewithJoda() { String dateStart = "01/14/2012 09:29:58"; String dateStop = "01/15/2012 10
我从 http://sourceforge.net/projects/joda-time/files/joda-time/2.2/下载的Joda时间罐有问题.当我使用以下代码段时,我可以得到结果
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();
     }

}

结果是

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

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

01/14/2012 09:29:58

01/15/2012 10:31:48

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

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

解决方法

使用 Joda formatter(非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.");

使用Joda formatter(带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.");

用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.");

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读