自Date.getHours
和Date.getMinutes
被弃用以来,您如何获得小时和分钟?我在Google搜索中找到的示例使用了弃用的方法。
答案 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.Calendar和java.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)
虽然我是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)
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框架已内置在Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.Date
,Calendar
和SimpleDateFormat
。
要了解更多信息,请参见Oracle Tutorial。并在Stack Overflow中搜索许多示例和说明。规格为JSR 310。
目前位于Joda-Time的maintenance mode项目建议迁移到java.time类。
您可以直接与数据库交换 java.time 对象。使用符合JDBC driver或更高版本的JDBC 4.2。不需要字符串,不需要java.sql.*
类。
在哪里获取java.time类?
ThreeTen-Extra项目使用其他类扩展了java.time。该项目为将来可能在java.time中添加内容提供了一个试验场。您可能会在这里找到一些有用的类,例如Interval
,YearWeek
,YearQuarter
和more。
答案 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