【发布时间】:2021-02-22 10:37:48
【问题描述】:
我想编写两种方法,它们都依赖于一天中还剩多少时间的信息(距离一天结束还剩多少秒,以及一天中已经有多少百分比)已经通过)。不同的日子有不同的(有时只是)秒,有时是几个小时,所以我只依靠 24 * 60 * 60 并减去 sinceMidnight() 的结果是行不通的。 我试图在当前时间上增加一天,但到目前为止我失败了。
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.util.Calendar;
public class TimesOfSeconds {
public static void sinceMidnight(int intHours, int intMinutes, int intSeconds) {
int hoursInSeconds = intHours * 60 * 60;
int minutesInSeconds = intMinutes * 60;
int secondsSinceMidnight = hoursInSeconds + minutesInSeconds + intSeconds;
System.out.println(secondsSinceMidnight + " Seconds since Midnight!");
}
public static void tillEndOfDay() {
}
public static void percentOfDayPassed() {
}
public static void getTheTimeRight(int intHours, int intMinutes, int intSeconds) {
System.out.println(intHours + " " + intMinutes + " " + intSeconds);
}
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
SimpleDateFormat justHours = new SimpleDateFormat("HH");
int intHours = Integer.parseInt(justHours.format(cal.getTime()));
SimpleDateFormat justMinutes = new SimpleDateFormat("mm");
int intMinutes = Integer.parseInt(justMinutes.format(cal.getTime()));
SimpleDateFormat justSeconds = new SimpleDateFormat("ss");
int intSeconds = Integer.parseInt(justSeconds.format(cal.getTime()));
getTheTimeRight(intHours, intMinutes, intSeconds);
sinceMidnight(intHours, intMinutes, intSeconds);
}
}
【问题讨论】:
-
我建议你不要使用
Calendar和SimpleDateFormat。这些类设计不佳且早已过时,后者尤其是出了名的麻烦。由于您可以使用 java.time, the modern Java date and time API 中的LocalDate,因此只需坚持使用 java.time 即可完成所有日期和时间工作。
标签: java date time elapsedtime timeofday