我想在Java对象中存储用户指定的粗略时间(未指定日期)。我可以实例化一个LocalTime对象并在一行Java代码中设置它的小时和分钟吗?还是有一个不同的,更合适的现有课程? 我没有足够的谷歌巫术来找到这样的。详细说明如下,谢谢:
< 1年android / java exp。 我正在扩展GregorianCalendar类并为FutureCal编写一个构造函数,它采用整数小时(0-23)和分钟,并返回一个calendar-ish对象,其日期/时间与该小时的第一个未来事件相匹配:分钟(将于今天)或明天 - 通知/提醒的东西)。为了允许其他可能有两个整数的构造函数,我想使用或创建一个TimeOfDay类/类型(由整数小时和分钟组成)并使用那个作为我的构造函数的参数。这是a)可能b)合适吗? 谢谢你的时间。
答案 0 :(得分:0)
也许我不明白所有但为什么不使用日历?我的意思是,您可以在Calendar对象中设置时间。
int hour = 'your hour';
int minute = 'your minute';
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR, hour).
cal.set(Calendar.MINUTE, minute);
答案 1 :(得分:0)
我可以实例化一个LocalTime对象并设置其小时和分钟 一行Java代码?
是的,前提是您使用的是Java 8(LocalTime在Java 8中似乎是新的):
LocalTime time = LocalTime.of(hour, minute);
当您想知道特定类的行为时,您应该查阅他们的文档,在本例中为http://docs.oracle.com/javase/8/docs/api/java/time/LocalTime.html。在大多数情况下,您可以更快地得到答案,并获得后续问题的答案。
答案 2 :(得分:0)
Joda-Time库是GregorianCalendar,java.util.Date,SimpleTextFormat等可怕混乱的流行且陈旧的替代品。 Joda-Time适用于Android。
LocalTime
Joda-Time提供LocalTime
来表示没有任何日期或时区的仅限时间的值。这个类有你想要的构造函数,传递小时和分钟值。
Java 8中内置的新java.time包(受Joda-Time启发)也提供了类似的LocalTime类。但Java 8技术不适用于Android。
以下是一些使用Joda-Time 2.4的示例代码。
LocalTime localTime = new LocalTime( 13, 15 ); // Quarter-hour after 1 PM.
您可以将LocalTime应用于DateTime对象。所以, Joda-Time已经提供了你想要发明的一切。以下是一些示例代码,将今天的日期时间设置为所需的时间,除非已经过了,在这种情况下我们会滑到明天的日期并重新应用我们想要的时间。
LocalTime localTime = new LocalTime( 13 , 15 ); // Quarter-hour after 1 PM.
System.out.println( "localTime: " + localTime );
DateTimeZone timeZone = DateTimeZone.forID( "America/Montreal" ); // Or DateTimeZone.UTC
DateTime today = localTime.toDateTimeToday( timeZone );
DateTime now = DateTime.now(); // You may want to pad an bit of extra time in case now is extremely close to midnight (new day).
if ( today.isBefore( now ) ) {
// If the local time in question when applied to today has already past, then
// adjust to tomorrow while accounting for Daylight Saving Time or other anomaly.
DateTime tomorrowInitial = today.plusDays( 1 ); // Get tomorrow by adding 1 day to today.
DateTime tomorrow = localTime.toDateTime( tomorrowInitial ); // DST or other anomaly may mean that tomorrow got adjusted to a different time-of-day. Override with our desired time-of-day.
System.out.println( "tomorrow: " + tomorrow );
// return tomorrow;
}
System.out.println( "today: " + today );
// return today;
跑步时。
localTime: 13:15:00.000
tomorrow: 2014-10-09T13:15:00.000-04:00
today: 2014-10-08T13:15:00.000-04:00
最好避免使用java.util.Date。但如果需要,您可以转换自Joda-Time。
java.util.Date date = today.toDate(); // Convert from Joda-Time DateTime to java.util.Date.