java - java 军事时间 时差

标签 java time

因此,对于一项作业,我们必须编写一个程序,该程序需要两次军事时间,并显示它们之间的小时和分钟差异,假设第一次是两次时间中较早的一次。我们不允许使用 if 语句,因为它在技术上尚未被学习。这是运行时的示例。我将在提示时将手动输入的内容放在引号中。

java MilitaryTime

Please enter first time:  "0900"

Please enter second time:  "1730"

8 hours 30 minutes    (this is the final answer)

我可以使用以下代码轻松完成这部分:

class MilitaryTime  {

   public static void main(String [] args) {

      Scanner in = new Scanner(System.in);

            System.out.println("Please enter the first time: ");

            int FirstTime = in.nextInt();

            System.out.println("Please enter the second time: ");

            int SecondTime = in.nextInt();

            int FirstHour = FirstTime / 100;

            int FirstMinute = FirstTime % 100;

            int SecondHour = SecondTime / 100;

            int SecondMinute = SecondTime % 100;

            System.out.println( ( SecondHour - FirstHour ) + " hours " + ( SecondMinute 

                - FirstMinute ) + " minutes "  );
       }
}

现在我的问题是有些东西没有分配(或者我不会在这里!)书里这个问题的另一部分说要采用我们刚刚编写的程序并处理第一次的情况比第二个晚。这真的让我很好奇如何做到这一点,也让我很困惑。同样,我们不允许使用 if 语句,否则这很容易,我们基本上拥有所有可以使用的数学函数。

例如,第一次现在是 1730,第二次是 0900,所以现在返回 15 小时 30 分钟。

最佳答案

我想建议使用org.joda.time.DateTime 。有很多日期和时间函数。

示例:

SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy hh:mm");
Date startDate = format.parse("10-05-2013 09:00");
Date endDate = format.parse("11-05-2013 17:30");

DateTime jdStartDate = new DateTime(startDate);
DateTime jdEndDate = new DateTime(endDate);

int years = Years.yearsBetween(jdStartDate, jdEndDate).getYears();
int days = Days.daysBetween(jdStartDate, jdEndDate).getDays();
int months =  Months.monthsBetween(jdStartDate, jdEndDate).getMonths();
int hours = Hours.hoursBetween(jdStartDate, jdEndDate).getHours();
int minutes = Minutes.minutesBetween(jdStartDate, jdEndDate).getMinutes();

System.out.println(hours + " hours " + minutes + " minutes");

您期望的程序如下:

SimpleDateFormat format = new SimpleDateFormat("hhmm");
Dates tartDate = format.parse("0900");
Date endDate = format.parse("1730");
DateTime jdStartDate = new DateTime(startDate);
DateTime jdEndDate = new DateTime(endDate);
int hours = Hours.hoursBetween(jdStartDate, jdEndDate).getHours();
int minutes = Minutes.minutesBetween(jdStartDate, jdEndDate).getMinutes();
minutes = minutes % 60;

System.out.println(hours + " hours " + minutes + " minutes");

输出:

8 hours 30 minutes

关于java - java 军事时间 时差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21153746/

相关文章:

java - Java 中的两次减法

java - 使用 BufferedReader 跳过行

java - 发送邮件失败,连接超时错误

java - 如何禁用解析作为 url 参数/从 url 传递的登录参数

java 测量方法调用率

php - 比较时间范围并计算时间差

go - 如何在 Go 中解析日历周数

java - Spring注释不起作用

javascript - 客户端计时是否可能与服务器端计时一致?

security - POSIX 兼容方式来判断系统是否重新启动?