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

标签 java datetime jodatime

我在使用从 http://sourceforge.net/projects/joda-time/files/joda-time/2.2/ 下载的 Joda time jar 时遇到问题.当我使用以下代码片段时,我可以获得结果

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 (非上午/下午)

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

使用 Joda formatter (有上午/下午)

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

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

关于Java-如何在使用 Joda Time Jar 时计算准确的时差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17499987/

相关文章:

java - 模式 "YYYY-MM-dd HH:mm:ss Z"导致解析异常,而 Jodatime 没有

java - Spring Boot中读取url编码数据

java - 如何使用 Maven 程序集将类路径属性添加到可执行 jar

java - 在Android中将日期格式转换为另一种日期?

javascript - 无法从 jquery 中的值字段传递日期时间

输入日期的VBA解释

java - Joda 日期格式化程序

java - 使用实例初始值设定项来处理构造函数重载

.net - 如何自动将 datetimepicker 值设置为所选月份的 1 号?

android - 在澳大利亚项目中使用 JodaTime