如何使用java.util.Date进行日历算术?

del*_*ber 32 java

目前我有一个表示时间的Date对象.我该如何为这个物体添加5分钟?

Whi*_*g34 52

您可以使用Calendar,这将使添加任何时间长度变得容易:

Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.MINUTE, 5);
Date newDate = cal.getTime();
Run Code Online (Sandbox Code Playgroud)

对于您的情况,您可以添加时间(以毫秒为单位),如下所示:

Date newDate = new Date(date.getTime() + 5 * 60 * 1000L);
Run Code Online (Sandbox Code Playgroud)


小智 9

考虑使用Joda-Time.这是一个使日期和时间处理比内置处理更令人愉快的库.

DateTime课程提供了一种plusMinutes方法.

DateTime now = DateTime.now( DateTimeZone.forID( "America/Montreal" ) );
DateTime inFiveMinutes = now.plusMinutes( 5 );
Run Code Online (Sandbox Code Playgroud)

  • @Heiko:如果你做了很多这么简单的任务,那就不行了. (4认同)
  • 这样一个简单的任务完全有点过头了. (3认同)
  • @HeikoRupp如果某人通过添加分钟来操纵日期时间值,他们可能正在执行许多其他日期时间任务.那些看似简单的任务很快变得复杂,容易混淆,容易出错,而且如果没有像[Joda-Time](http://www.joda.org/joda-time/)那样不错的日期时间库,或者Java 8中的[java.time包](http://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html)(受Joda-Time启发,由[JSR 310定义] ](https://jcp.org/en/jsr/detail?id=310)). (2认同)
  • 仅供参考,[*Joda-Time*](http://www.joda.org/joda-time/) 项目现在处于[维护模式](https://en.wikipedia.org/wiki/Maintenance_mode),建议迁移到 [*java.time*](http://docs.oracle.com/javase/10/docs/api/java/time/package-summary.html) 类。请参阅 [Oracle 教程](https://docs.oracle.com/javase/tutorial/datetime/TOC.html)。 (2认同)

Jer*_*unn 6

Java 8 提供了新的选项。事实上,Joda Time 建议尽快转向 Java 8 日期和时间 API。以下是从此链接添加时间的示例:

https://docs.oracle.com/javase/tutorial/datetime/iso/period.html

以下代码将当前时间添加 5 分钟:

LocalDateTime now = LocalDateTime.now();
now = now.plusMinutes(5);
System.out.println(now);
Run Code Online (Sandbox Code Playgroud)


Pet*_*rey 5

日期的时间以毫秒为单位.但是,long对于这种类型的计算,您可能会发现使用a 更简单.

Date date1 = new Date();
long time1 = date1.getTime();
long time2 = time1 + 5 * 60 * 1000;
Date date2 = new Date(time2);
Run Code Online (Sandbox Code Playgroud)

如果使用plain long,则可以删除带有Date对象的行.