使用简单的构造函数(小时,分钟)创建/查找java类,以便使用扩展GregorianCalendar

时间:2014-10-08 15:01:47

标签: java android datetime extends

我想在Java对象中存储用户指定的粗略时间(未指定日期)。我可以实例化一个LocalTime对象并在一行Java代码中设置它的小时和分钟吗?还是有一个不同的,更合适的现有课程? 我没有足够的谷歌巫术来找到这样的。详细说明如下,谢谢:

< 1年android / java exp。 我正在扩展GregorianCalendar类并为FutureCal编写一个构造函数,它采用整数小时(0-23)和分钟,并返回一个calendar-ish对象,其日期/时间与该小时的第一个未来事件相匹配:分钟(将于今天)或明天 - 通知/提醒的东西)。为了允许其他可能有两个整数的构造函数,我想使用或创建一个TimeOfDay类/类型(由整数小时和分钟组成)并使用那个作为我的构造函数的参数。这是a)可能b)合适吗? 谢谢你的时间。

3 个答案:

答案 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.time

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.