Java时间戳 - 添加五分钟

时间:2013-03-15 10:27:41

标签: java

寻找一些我正在处理的Java代码的帮助,我有以下代码打印出日期和时间:

  Date dNow = new Date( ); // Instantiate a Date object
  SimpleDateFormat ft = new SimpleDateFormat ("MMM d, yyyy k:mm:ss");  // Time at server

结果:2013年3月15日10:19:48

我正在创建一个javascript计数器,从5分钟开始计算这个数字和倒计时。所以我需要在Java中添加5分钟到当前日期时间。

因此,如果当前日期时间是:2013年3月15日10:19:48

我需要在Java上添加5分钟,以便打印出来:2013年3月15日10:24:48

有什么想法吗?

8 个答案:

答案 0 :(得分:44)

而不是以

开头
new Date()

开始
new Date(System.currentTimeMillis()+5*60*1000)

这将为您提供一个Date实例,代表您所需的时间点。您无需更改代码的任何其他部分。

答案 1 :(得分:14)

您应该使用Calendar class来操纵日期和时间:

  

Calendar类是一个提供方法的抽象类   在特定时刻和一组日历之间转换   字段,例如YEAR,MONTH,DAY_OF_MONTH,HOUR等,以及for   操纵日历字段,例如获取下一个日期   周

  Date dNow = new Date( ); // Instantiate a Date object
  Calendar cal = Calendar.getInstance();
  cal.setTime(dNow);
  cal.add(Calendar.MINUTE, 5);
  dNow = cal.getTime();

答案 2 :(得分:13)

忽略Dates并专注于此问题。

我的偏好是使用java.util.concurrent.TimeUnit,因为它增加了我的代码的清晰度。

在Java中,

long now = System.currentTimeMillis();

now使用TimeUtil后5分钟:

long nowPlus5Minutes = now + TimeUnit.MINUTES.toMillis(5);

参考:http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/TimeUnit.html

答案 3 :(得分:5)

使用此...

    Calendar calendar = Calendar.getInstance();
    System.out.println(calendar.getTime());
    calendar.add(Calendar.MINUTE, 5);
    System.out.println(calendar.getTime());

答案 4 :(得分:3)

TL;博士

Instant.now()
       .plusSeconds( TimeUnit.MINUTES.toSeconds( 5 ) )
       .toString()
  

2017-01-23T03:11:53.763Z

详细

其他答案从Java 8开始已经过时了。麻烦的旧日期时间类现在已经遗留下来,取而代之的是java.time类。

Instant类代表UTC中时间轴上的一个时刻,分辨率为nanoseconds(小数部分最多九(9)位)。

Instant instant = Instant.now();

此类可以进行数学运算,例如添加秒数。我们可以使用TimeUnit枚举将我们想要的五分钟转换为几秒钟。

long seconds = TimeUnit.MINUTES.toSeconds( 5 );
Instant fiveMinutesLater = instant.plusSeconds( seconds );

要以标准ISO 8601格式生成字符串,请致电toString

String output = fiveMinutesLater.toString();

要生成其他格式的字符串,请使用ZonedDateTime类和DateTimeFormatter类。搜索Stack Overflow以获取这些类的许多示例和讨论。

关于java.time

java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.DateCalendar和& SimpleDateFormat

现在位于Joda-Timemaintenance mode项目建议迁移到java.time类。

要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310

从哪里获取java.time类?

ThreeTen-Extra项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如IntervalYearWeekYearQuartermore

答案 5 :(得分:2)

Date dNow = new Date(System.currentTimeMillis()+5*60*1000)
SimpleDateFormat ft = new SimpleDateFormat ("MMM d, yyyy k:mm:ss");
System.out.println(ft.format(dNow));

借助已弃用的方法getMinutes(),setMinutes(int)

 Date dNow = new Date( ); // Instantiate a Date object
 int mm = dNow.getMinutes();
 dNow.setMinutes(mm+5);

答案 6 :(得分:0)

Java日期以毫秒为单位使用Unix time。因此,您要么计算多少5分钟(以毫秒为单位)并将它们添加到您的日期,要么使用为您完成此操作的Calendar类。

答案 7 :(得分:0)

你可以试试这个最好的表现

    GregorianCalendar gc = new GregorianCalendar();
            gc.setTimeInMillis(System.currentTimeMillis());
            gc.add(Calendar.MINUTE, -5);
            System.out.println(new java.util.Date().getTime());
            System.out.println(new java.util.Date(gc.getTime().getTime()).getTime());