目前我有一个表示时间的Date对象。我如何为这个对象添加5分钟?
答案 0 :(得分:48)
您可以使用Calendar
,这样可以轻松添加任意长度的时间:
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.MINUTE, 5);
Date newDate = cal.getTime();
对于您的情况,您可以添加时间(以毫秒为单位):
Date newDate = new Date(date.getTime() + 5 * 60 * 1000L);
答案 1 :(得分:8)
考虑使用Joda-Time。这是一个使日期和时间处理比内置处理更令人愉快的库。
DateTime
课程提供了plusMinutes
方法。
DateTime now = DateTime.now( DateTimeZone.forID( "America/Montreal" ) );
DateTime inFiveMinutes = now.plusMinutes( 5 );
答案 2 :(得分:5)
日期的时间以毫秒为单位。但是,您可能会发现使用long
对于此类计算更为简单。
Date date1 = new Date();
long time1 = date1.getTime();
long time2 = time1 + 5 * 60 * 1000;
Date date2 = new Date(time2);
如果使用普通long
,则可以删除带有Date对象的行。
答案 3 :(得分:4)
使用Java 8有新选项。实际上Joda Time建议尽快转移到Java 8 Date和Time API。以下是从此链接添加时间的示例:
https://docs.oracle.com/javase/tutorial/datetime/iso/period.html
以下代码为当前时间增加了5分钟:
LocalDateTime now = LocalDateTime.now();
now = now.plusMinutes(5);
System.out.println(now);
答案 4 :(得分:2)
myDate.toInstant()
.plus( 5 , ChronoUnit.MINUTES )
Date
类是不再使用的麻烦的旧日期类的一部分。它们被java.time类取代。
Instant
使用添加到旧类的新方法将Date
转换为Instant
。两者都代表UTC时间轴上的一个时刻,但较新的类具有更精细的纳秒级分辨率。
Instant instant = myDate.toInstant() ;
添加五分钟很容易。
Instant later = instant.plus( 5 , ChronoUnit.MINUTES ) ;
或使用Duration
。
Duration d = Duration.ofMinutes( 5 ) ;
Instant later = instant.plus( d ) ;
答案 5 :(得分:0)
在Java 7中,您可以使用Apache Commons库中的DateUtils类:
Date dateWithFiveMinutesAdded = DateUtils.addMinutes(date, 5);
或Joda-Time图书馆:
Date dateWithFiveMinutesAdded = new DateTime(date).plusMinutes(5).toDate();
如果您使用Java 8并且不想使用任何外部库,请考虑新的内置Java 8 Date / Time API:
Date dateWithFiveMinutesAdded = Date.from(date.toInstant().plus(5, ChronoUnit.MINUTES));
或者:
Date dateWithFiveMinutesAdded = Date.from(date.toInstant().plusSeconds(5 * 60));
但是对于Java 8,您应该使用Instant,ZonedDateTime或LocalDateTime而不是Date。
显然还有很多方法可以做到这一点,但在我看来,在代码清晰度方面,它们非常干净和紧凑。