寻找一些我正在处理的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
有什么想法吗?
答案 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)
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 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.Date
,Calendar
和& SimpleDateFormat
现在位于Joda-Time的maintenance mode项目建议迁移到java.time类。
要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310。
从哪里获取java.time类?
ThreeTen-Extra项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如Interval
,YearWeek
,YearQuarter
和more。
答案 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());