私は2つの時間値の時間差を取得しようとしています。 (11:00:00と12:43:00)、正しい出力を示しています。入力値に対するJavaを使用した2つの時間の時差
**
Time in seconds: 6180 seconds.
Time in minutes: 103 minutes.
Time in hours: 1 hours.
Time in hours Round : 2 hours.
** ( "11時○○分00秒" と "2時43分00秒")は、ラウンド値 として3時間に私たちにを与える必要があります**
Time in seconds: -29820 seconds.
Time in minutes: -497 minutes.
Time in hours: -8 hours.
Time in hours Round : -8 hours.
**
import java.lang.Math;
import java.text.SimpleDateFormat;
import java.util.Date;
public class HelloWorld
{
public static void main(String[] args)
{
String dateStart = "11:00:00";
String dateStop = "12:43:00";
// Custom date format
SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");
Date d1 = null;
Date d2 = null;
try {
d1 = format.parse(dateStart);
d2 = format.parse(dateStop);
} catch (Exception e) {
e.printStackTrace();
}
// Get msec from each, and subtract.
long diff = d2.getTime() - d1.getTime();
long diffSeconds = diff/1000;
long diffMinutes = diff/(60 * 1000);
long diffHours = diff/(60 * 60 * 1000);
int parkingEntry=2;
int firstHour=3;
int parkingRate=4;
int Total=0;
System.out.println("Time in seconds: " + diffSeconds + " seconds.");
System.out.println("Time in minutes: " + diffMinutes + " minutes.");
System.out.println("Time in hours: " + diffHours + " hours.");
double my_hrs=diffMinutes/60d;
int r = (int) Math.round(my_hrs);
System.out.println("Time in hours Round : " + r + " hours.");
}
}
長いdiffInMillis = d2.getTimeInMillis()を使用してみてください - d1.getTimeInMillis() –
[ 'Duration']を使用してみてください( https://docs.oracle.com/javase/8/docs/api/java/time/Duration.html)および['LocalTime'](https://docs.oracle.com/javase/8/docs/api) /java/time/LocalTime.html) – MadProgrammer
@ user7790438、それはコンパイルされません(もしそうであれば、質問者の問題に役立たないでしょう)。あなたは 'Calendar'クラスのメソッドと混乱しています。 'Date'と' Calendar'の間の不一致は、 'LocalTime'と' Duration'(MadProgrammerが示唆しているように)に変更したときに大きく克服される事の一つに過ぎません。 –