如果 Java 中不推荐使用某个方法,那么将有另一种更好的方法来获得相同的功能,对吧?
Date date = new Date();
date.getHours()
正如getHours()
已弃用的那样,仅使用课程来获得时间的最佳方法是什么Date
?
如果 Java 中不推荐使用某个方法,那么将有另一种更好的方法来获得相同的功能,对吧?
Date date = new Date();
date.getHours()
正如getHours()
已弃用的那样,仅使用课程来获得时间的最佳方法是什么Date
?
Deprecated. As of JDK version 1.1, replaced by Calendar.get(Calendar.HOUR_OF_DAY).
Joda 库是处理日期和时间的另一个最佳选择。
这些方法确实已被弃用。
您现在应该使用 java.util.Calendar#get()
所以你的例子变成
Calendar cal = Calendar.getInstance();
cal.get(Calendar.HOUR);
请参阅此类的 javadoc。
请注意,您可以通过在 cal 上调用 getTime 来获取 Date 对象。
Calendar cal = Calendar.getInstance();
cal.get(Calendar.HOUR);
如果你想作为一个日期
Date date = cal.getTime();
您应该使用日历或 Joda Time 库。
但是,如果您只能使用日期,这是您唯一的方法。请注意,这不会针对时区进行调整。
java.util
日期时间 API 及其格式化 API已SimpleDateFormat
过时且容易出错。建议完全停止使用它们并切换到现代 Date-Time API *。
请注意,从 Java SE 8 开始,用户被要求迁移到 java.time (JSR-310) - JDK 的核心部分,它取代了这个项目。
使用java.time
现代日期时间 API 的解决方案:
您可以使用ZonedDateTime#now(ZoneId)
获取当前的 Date-Time 对象,从中可以获取时区偏移量、年、月、日、小时、分钟、秒、纳秒等信息。如果您不需要时区偏移量,则可以使用LocalDateTime#now(ZoneId)
。但是,如果您只需要当前时间信息,您可以使用LocalTime#now(ZoneId)
获取特定时区的本地时间,然后从LocalTime
.
演示:
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
public class Main {
public static void main(String[] args) {
// Change the JVM's ZoneId, ZoneId.systemDefault() with the applicable ZoneId
// e.g. ZoneId.of("America/Los_Angeles")
ZoneId zoneId = ZoneId.systemDefault();
ZonedDateTime zdt = ZonedDateTime.now(zoneId);
System.out.println(zdt.getHour());
LocalDateTime ldt = LocalDateTime.now(zoneId);
System.out.println(ldt.getHour());
LocalTime time = LocalTime.now(zoneId);
System.out.println(time.getHour());
}
}
示例运行的输出:
13
13
13
从Trail: Date Time了解有关现代日期时间 API 的更多信息。
* 出于任何原因,如果您必须坚持使用 Java 6 或 Java 7,则可以使用ThreeTen-Backport,它将大部分java.time功能向后移植到 Java 6 和 7。如果您正在为 Android 项目和 Android API 工作level 仍然不符合 Java-8,请检查Java 8+ APIs available through desugaring和How to use ThreeTenABP in Android Project。
正如其他人已经说过的那样, Javadoc建议改用Calendar.get(Calendar.HOUR_OF_DAY)
.
Deprecated. As of JDK version 1.1, replaced by Calendar.get(Calendar.HOUR_OF_DAY).
这是已经设置好的方法Date
:
int getHourOfDay(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.get(Calendar.HOUR_OF_DAY);
}
Calendar.HOUR_OF_DAY
如果您想要 0-23 和Calendar.HOUR
0-11 的数字,请使用。
使用如下代码。
Date date = new Date();
System.out.println(date);
System.out.println(new SimpleDateFormat("HH").format(date));
System.out.println(new SimpleDateFormat("mm").format(date));
System.out.println(new SimpleDateFormat("MM").format(date));
}