使用数小时和12小时的时间无法正常工作时,JODA时间不考虑AM/PM



我正在编写一个程序来使用JODA时间计算Java的年龄差,并且在计算小时()之间,它没有考虑到AM和PM。这是我的代码:

public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    String DOB = "";
    String NOW = "";
    SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy hh:mm aa");
    Date dob = null;
    Date now = null;
    try {
        System.out
                .println("Enter the date and time of your birth using the mm/dd/yyyy and the hh:mm AM/PM format: ");
        DOB = scan.nextLine();
        System.out
                .println("Enter the date and time using the mm/dd/yyyy and the hh:mm AM/PM format: ");
        NOW = scan.nextLine();
        dob = format.parse(DOB);
        now = format.parse(NOW);
        DateTime dob1 = new DateTime(dob);
        DateTime now1 = new DateTime(now);

        System.out.print("You are ");
        System.out.print(Years.yearsBetween(dob1, now1).getYears()
                + " years, ");
        System.out.print(Months.monthsBetween(dob1, now1).getMonths() % 12
                + " months, ");
        System.out.print(Days.daysBetween(dob1, now1).getDays() % 60
                + " days, ");
        System.out.print(Hours.hoursBetween(dob1, now1).getHours() % 12
                + " hours, ");
        System.out.print("and "
                + Minutes.minutesBetween(dob1, now1).getMinutes() % 60
                + " minutes old!");
    } catch (Exception e) {
        e.printStackTrace();
    }
}}

如果我出生日期的输入是" 01/01/2014 12:00 AM",而我目前的输入是" 01/01/2014 12:00 pm",则结果是:"您是0年,0个月,0小时,0分钟大。"何时应该年满12小时。有没有办法来解决这个问题?我的猜测是有某种方法可以实现halfdayofday()方法并在我的 datetime 's上调用它,但是我还没有找到它...谢谢您的任何帮助!(顺便说一句,我正在使用12小时的时间进行输入,但是在解析时仍然接受13:00,当它应在12:00最大化时!)

您在

之间的小时数中进行模拟12
Hours.hoursBetween(dob1, now1).getHours() % 12

so

12 % 12 = 0

您的工作太努力了。

joda time提供了精确完成这项工作的课程:PeriodFormatterPeriodFormatterBuilder

请参阅Balusc。

的答案

答案显示这样的代码:

PeriodFormatter formatter = new PeriodFormatterBuilder()
    .appendSeconds().appendSuffix(" seconds agon")
    .appendMinutes().appendSuffix(" minutes agon")
    .appendHours().appendSuffix(" hours agon")
    .appendDays().appendSuffix(" days agon")
    .appendWeeks().appendSuffix(" weeks agon")
    .appendMonths().appendSuffix(" months agon")
    .appendYears().appendSuffix(" years agon")
    .printZeroNever()
    .toFormatter();

相关内容

  • 没有找到相关文章

最新更新