我应该使用什么而不是弃用的Date.getHours()

sun*_*leo 2 java datetime deprecated

如果在Java中不推荐使用某种方法,那么将有另一种更好的方法来实现相同的功能,对吧?

Date date = new Date();
date.getHours()
Run Code Online (Sandbox Code Playgroud)

由于getHours()已被弃用,是什么让时间的最好方法只使用Date类?

bea*_*022 12

正如其他人已经指出的那样,Javadoc建议改用Calendar.get(Calendar.HOUR_OF_DAY).

Deprecated. As of JDK version 1.1, replaced by Calendar.get(Calendar.HOUR_OF_DAY).
Run Code Online (Sandbox Code Playgroud)

以下是您如何对已设置的内容执行此操作Date

int getHourOfDay(Date date) {
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    return calendar.get(Calendar.HOUR_OF_DAY);
}
Run Code Online (Sandbox Code Playgroud)

如果您想要 0-23 和0-11 之间Calendar.HOUR_OF_DAY的数字,请使用。Calendar.HOUR

  • 您的答案是唯一描述如何从现有日期获取像OP所要求的小时的答案。您的回答应该被接受! (3认同)

kos*_*osa 8

Javadoc明确建议

Deprecated. As of JDK version 1.1, replaced by Calendar.get(Calendar.HOUR_OF_DAY).
Run Code Online (Sandbox Code Playgroud)

Joda库是处理日期和时间的另一个最佳选择.


aut*_*tra 8

这些方法确实已被弃用。

您现在应该使用 java.util.Calendar#get()

所以你的例子变成

Calendar cal = Calendar.getInstance();
cal.get(Calendar.HOUR);
Run Code Online (Sandbox Code Playgroud)

请参阅此类的 javadoc。

请注意,您可以通过在 cal 上调用 getTime 来获取 Date 对象。


Dar*_*ian 5

Calendar cal = Calendar.getInstance();
cal.get(Calendar.HOUR);
Run Code Online (Sandbox Code Playgroud)

如果你想是约会

Date date = cal.getTime();
Run Code Online (Sandbox Code Playgroud)


Pet*_*rey 5

您应该使用日历或 Joda Time 库。

但是,如果您只能使用日期,那么这是您唯一的方法。请注意,这不会根据时区进行调整。