Java:getMinutes和getHours

时间:2009-05-25 15:35:03

标签: java date time

Date.getHoursDate.getMinutes被弃用以来,您如何获得小时和分钟?我在Google搜索中找到的示例使用了弃用的方法。

12 个答案:

答案 0 :(得分:160)

尝试使用Joda Time而不是标准的java.util.Date类。 Joda Time库有更好的API处理日期。

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

有关使用Joda Time库的优缺点,请参阅此question

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


如果必须使用传统的java.util.Date和java.util.Calendar类,请参阅他们的JavaDoc以获取帮助(java.util.Calendarjava.util.Date)。

您可以使用这样的传统类从给定的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!

答案 1 :(得分:83)

来自Javadoc for 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的等价物。

答案 2 :(得分:47)

java.time

虽然我是Joda-Time的粉丝,但Java 8引入了java.time包,这最终是一个有价值的Java标准解决方案!阅读本文Java SE 8 Date and Time,获取有关小时和分钟之外的java.time的大量信息。

特别是,请查看LocalDateTime类。

小时和分钟:

LocalDateTime.now().getHour();
LocalDateTime.now().getMinute();

答案 3 :(得分:34)

首先,导入java.util.Calendar

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

答案 4 :(得分:6)

试试日历。使用getInstance获取Calender-Object。然后使用setTime设置所需的日期。现在你可以使用get(int field)和HOUR_OF_DAY之类的相应常量来读取你需要的值。

http://java.sun.com/javase/6/docs/api/java/util/Calendar.html

答案 5 :(得分:4)

tl; dr

ZonedDateTime.now().getHour()

…或…

LocalTime.now().getHour() 

ZonedDateTime

Answer by J.D.是好的,但不是最优的。该答案使用LocalDateTime类。缺少任何时区或UTC偏移量的概念,该类不能表示一个时刻。

最好使用ZonedDateTime

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

指定时区

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

所以:

ZonedDateTime.now()

...与此相同:

ZonedDateTime.now( ZoneId.systemDefault() )

最好是明确的,超过您希望的/预期的时区。默认值可以在运行时change at any moment

如果紧急,请与用户确认时区。

时分

询问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).

java.time 类型

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


关于 java.time

java.time框架已内置在Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.DateCalendarSimpleDateFormat

要了解更多信息,请参见Oracle Tutorial。并在Stack Overflow中搜索许多示例和说明。规格为JSR 310

目前位于Joda-Timemaintenance mode项目建议迁移到java.time类。

您可以直接与数据库交换 java.time 对象。使用符合JDBC driver或更高版本的JDBC 4.2。不需要字符串,不需要java.sql.*类。

在哪里获取java.time类?

ThreeTen-Extra项目使用其他类扩展了java.time。该项目为将来可能在java.time中添加内容提供了一个试验场。您可能会在这里找到一些有用的类,例如IntervalYearWeekYearQuartermore

答案 6 :(得分:3)

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

这些函数将以小时和分钟的形式返回int值。

答案 7 :(得分:2)

我建议您查看广告时间。 http://www.joda.org/joda-time/

我害怕在我的厚项目中添加另一个库,但它简单快捷,智能且非常棒。 此外,它在某种程度上与现有代码相得益彰。

答案 8 :(得分:2)

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

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

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

答案 9 :(得分:1)

虽然我不建议这样做,但我认为值得指出的是,尽管java.util.Date上的许多方法已被弃用,但它们仍然有用。在琐碎的情况下,使用它们可能没问题。此外,java.util.Calendar非常慢,因此在Date上的getMonth和getYear可能会更快。

答案 10 :(得分:1)

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

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

这对我有用

答案 11 :(得分:0)

import java.util.*您可以使用日历和格式化程序类进行gethour和minute。 Calendar cal = Calendar.getInstance()Formatter fmt=new Formatter()并设置显示小时和分钟fmt.format("%tl:%M",cal,cal)的格式,并打印System.out.println(fmt)输出显示为10:12