0
私は時間間隔を計算するプログラムを持っています。 PMでtimeToの時刻を入力するとAMに変わります(デバッグしたとき)。ここ コードがある:PM AMへの変更
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
Scanner sc = new Scanner(System.in);
System.out.print("Enter date: "); //ex: input 2016-02-16
String dateFrom = sc.nextLine();
System.out.print("Enter time from: "); //ex input: 09:00 AM
String timeFrom = sc.nextLine();
System.out.print("Enter time to: "); //ex input: 05:00 PM
String timeTo = sc.nextLine();
String substring = timeTo.substring(Math.max(timeTo.length() - 2, 0));
String substring1 = timeFrom.substring(Math.max(timeFrom.length() - 2, 0));
Calendar c = Calendar.getInstance();
try {
c.setTime(dateformat.parse(dateFrom));
} catch (Exception e) {
}
if ("AM".equals(substring) && "AM".equals(substring1)) {
c.add(Calendar.DATE, 1);
} else if ("AM".equals(substring)) {
c.add(Calendar.DATE, 1);
}
Date date1 = c.getTime();
dateTo = dateformat.format(date1);
Date d1 = new Date();
Date d2 = new Date();
try {
d1 = format.parse(dateFrom + " " + timeFrom);
d2 = format.parse(dateTo + " " + timeTo); // instead of 2016-02-16 05:00:00 PM
// it becomes 2016-02-16 05:00:00 AM
} catch (Exception e) {
}
long diffMin = (d2.getTime() - d1.getTime())/(60 * 1000) % 60;
long diffHour = (d2.getTime() - d1.getTime())/(60 * 60 * 1000) % 24;
double d = (double) diffMin;
double d3 = (double) diffHour; // -4.0 because 05:00 AM - 09:00 AM
ちょうど上記のサンプルのように、timeFromための入力値09:00 AMとtimeToため5:00 PMであるD2に渡されたときには、5:00 AMになります。