GetMinutes 和 getHours

如何获得 Date.getHoursDate.getMinutes被弃用后的小时和分钟?我在谷歌搜索中找到的例子使用了不推荐的方法。

414153 次浏览

从 Javadoc 获取 Date.getHours

As of JDK version 1.1, replaced by Calendar.get(Calendar.HOUR_OF_DAY)

那就用吧

Calendar rightNow = Calendar.getInstance();
int hour = rightNow.get(Calendar.HOUR_OF_DAY);

和 getMinutes 的等价物。

首先,导入 java.util.Calendar

Calendar now = Calendar.getInstance();
System.out.println(now.get(Calendar.HOUR_OF_DAY) + ":" + now.get(Calendar.MINUTE));

试试日历。使用 getInstance 获取 Calender-Object。然后使用 setTime 设置所需的 Date。现在,您可以使用 get (int field)和适当的常量(如 HOUR _ OF _ DAY)来读取所需的值。

Http://java.sun.com/javase/6/docs/api/java/util/calendar.html

我建议你看看 Joda 时间。 Http://www.joda.org/joda-time/

我害怕在我的庞大项目中添加另一个库,但它只是简单、快速、智能和令人敬畏。 另外,在某种程度上,它可以很好地与现有代码一起使用。

尝试使用 乔达时间代替标准的 java.util.Date 类。

DateTime dt = new DateTime();  // current time
int month = dt.getMonth();     // gets the current month
int hours = dt.getHourOfDay(); // gets hour of day

有关使用 Joda Time 库的优缺点,请参见此 有个问题

Joda Time 也可能作为一个标准组件包含在 Java 的某个未来版本中,参见 JSR-310


如果您必须使用传统的 java.util.Date 和 java.util.Calendar 类,请查看它们的 JavaDoc 的帮助(Java.util. 日历Java.util 日期)。

您可以使用这样的传统类从给定的 Date 实例中获取字段。

Date date = new Date();   // given date
Calendar calendar = GregorianCalendar.getInstance(); // creates a new calendar instance
calendar.setTime(date);   // assigns calendar to given date
calendar.get(Calendar.HOUR_OF_DAY); // gets hour in 24h format
calendar.get(Calendar.HOUR);        // gets hour in 12h format
calendar.get(Calendar.MONTH);       // gets month number, NOTE this is zero based!

虽然我不建议这样做,但我认为值得指出的是,虽然 java.util 上有许多方法。日期已经过时了,它们仍然有效。在琐碎的情况下,可以使用它们。还有 java.util。日历非常慢,所以 getMonth 和 getYear on Date 可能更快。

可以使用日历和格式化程序类获取四分钟和分钟。Calendar cal = Calendar.getInstance()Formatter fmt=new Formatter()并设置一个显示小时和分钟的格式 fmt.format("%tl:%M",cal,cal)和打印 System.out.println(fmt)输出显示如 10:12

爪哇时间

虽然我是 Joda 时间的粉丝,但是 爪哇8引入了 爪哇时间包,这最终是一个有价值的 Java 标准解决方案!阅读这篇文章 JavaSE8日期和时间,可以获得关于 java.time 的大量信息,包括小时和分钟。

特别是,看看 LocalDateTime类。

时间及分钟:

LocalDateTime.now().getHour();
LocalDateTime.now().getMinute();
int hr=Time.valueOf(LocalTime.now()).getHours();
int minutes=Time.valueOf(LocalTime.now()).getMinutes();

这些函数将以小时和分钟为单位返回 int 值。

public static LocalTime time() {
LocalTime ldt = java.time.LocalTime.now();


ldt = ldt.truncatedTo(ChronoUnit.MINUTES);
System.out.println(ldt);
return ldt;
}

这对我有用

获取分钟和小时的另一种方法是使用 SimpleDateFormat。

SimpleDateFormat formatMinutes = new SimpleDateFormat("mm")
String getMinutes = formatMinutes.format(new Date())


SimpleDateFormat formatHours = new SimpleDateFormat("HH")
String getHours = formatHours.format(new Date())

博士

ZonedDateTime.now().getHour()

或者..。

LocalTime.now().getHour()

ZonedDateTime

答案是 J.D。是好的,但不是最佳的。该答案使用 LocalDateTime类。由于没有任何时区或从 UTC 偏移的概念,该类不能表示时刻。

最好使用 ZonedDateTime

ZoneId z = ZoneID.of( "America/Montreal" ) ;
ZonedDateTime zdt = ZonedDateTime.now( z ) ;

指定时区

如果省略 ZoneId参数,则在运行时使用 JVM 的当前默认时区隐式应用一个参数。

所以这个:

ZonedDateTime.now()

和这个一样:

ZonedDateTime.now( ZoneId.systemDefault() )

最好是显式的,通过您想要的/期望的时区。默认值可以在运行时 随时改变

如果情况危急,请与用户确认时区。

一小时一分钟

审问 ZonedDateTime一小时一分钟。

int hour = zdt.getHour() ;
int minute = zdt.getMinute() ;

LocalTime

如果你想只是一天的时间没有时区,提取 LocalTime

LocalTime lt = zdt.toLocalTime() ;

或者完全跳过 ZonedDateTime,直接跳到 LocalTime

LocalTime lt = LocalTime.now( z ) ;  // Capture the current time-of-day as seen in the wall-clock time used by the people of a particular region (a time zone).

Time type

Table of types of date-time classes in modern java.time versus legacy.


关于 爪哇时间

< em > java.time 框架内置于 Java8及更高版本中。这些类取代了令人讨厌的旧的 遗产日期时间类,如 java.util.DateCalendarSimpleDateFormat

要了解更多,请参阅 < em > Oracle 教程 。并搜索堆栈溢出许多例子和解释。规范是 JSR 310

现在在 维修模式中的 尤达时间项目建议迁移到 爪哇时间类。

您可以直接与数据库交换 爪哇时间对象。使用与 JDBC 4.2或更高版本兼容的 JDBC 驱动程序。不需要字符串,不需要 java.sql.*类。

从哪里获得 java.time 类?

< strong > Three Ten-Ultra 项目使用其他类扩展 java.time。这个项目是将来可能添加 java.time 的试验场。您可以在这里找到一些有用的类,比如 IntervalYearWeekYearQuarter更多

  • 从日期变量(你的约会对象)获取小时:
    Calendar calendar = Calendar.getInstance();
calendar.setTime(yourdate);
int hours = calendar.get(Calendar.HOUR_OF_DAY);
int minutes = calendar.get(Calendar.MINUTE);
int seconds = calendar.get(Calendar.SECOND);