JavaでAM / PMの時間差

アゼアム・ハフェエス:

私は開始時刻iの入力、それがうまく機能し、12時間での入力時間形式により、Javaでの時間差を計算しようとしている11:58:10 pmと終了時刻を12:02:15 am私12:00:00午前12時○○分○○秒午後に入るようしかし、それは違い0分を与えます。理由を知りません。以下は、私が間違っているところ私に知らせてください私のコードです。

Scanner input = new Scanner(System.in);
System.out.print("Enter start time (HH:mm:ss aa): ");
String starttime = input.nextLine();

System.out.print("Enter end time (HH:mm:ss aa): ");
String endtime = input.nextLine();

//HH converts hour in 24 hours format (0-23), day calculation
SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss aa");

Date d1 = null;
Date d2 = null;

try {
    d1 = format.parse(starttime);
    d2 = format.parse(endtime);

    //in milliseconds
    long diff = d2.getTime() - d1.getTime();

    long diffSeconds = diff / 1000 % 60;
    long diffMinutes = diff / (60 * 1000) % 60;

    System.out.print(diffMinutes + " minutes and "+diffSeconds + " seconds.");
} catch (Exception e) {
    System.out.println("Invalid fromat");
}
グレッグ-449:

新しいjava.time方法LocalTimeDateTimeFormatterおよびDurationこれを処理するためのより良い方法を提供します。例えば:

DateTimeFormatter format = DateTimeFormatter.ofPattern("h:m:s a");

LocalTime time1 = LocalTime.parse("12:00:00 am", format);
LocalTime time2 = LocalTime.parse("2:00:20 pm", format);

Duration dur = Duration.between(time1, time2);

System.out.println(dur.toMinutes() + " minutes " + dur.toSecondsPart() + " seconds");

注:Duration.toSecondsPartJavaの9以降が必要です、このコードの残りの部分は、Java 8以降が必要です。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=24623&siteId=1