java经过的时间没有显示

时间:2013-12-09 09:25:17

标签: java

我阅读了之前的帖子并了解了以下内容,但仍然无效。任何人都可以帮助我吗?

long startTime = System.currentTimeMillis();
......
long endTime = System.currentTimeMillis();
long different  = endTime - startTime;

System.out.println("different : " + different);

long s = (different / 1000) % 60;
long m = (different / (1000 * 60)) % 60;
long h = (different / (1000 * 60 * 60)) % 24;
System.out.println(String.format("%d:%02d:%02d", h,m,s));  

为什么我的输出时间仍为0:00:00?

[output]
different : 473
0:00:00

4 个答案:

答案 0 :(得分:3)

因为473毫秒< 1s,所以你得到0:00:00。

答案 1 :(得分:1)

你正在运行473毫秒。那是半秒钟。

然后显示执行的小时分钟和秒,对所有小时都是0。

您的输出是正确的。

答案 2 :(得分:0)

您现在获得的输出在逻辑上是正确的。如果要计算毫秒时间,还要在print语句中显示毫秒数。

System.out.println(String.format("%02d:%02d:%02d.%03d", h,m,s,mls)); 

答案 3 :(得分:0)

TL;博士

Instant now = Instant.now();
String output = Duration.between( now , 
                                  now.plus( 473 , ChronoUnit.MILLISECONDS ) )
                        .toString();
  

PT0.473S

详细

正如其他人所说的那样,473毫秒不到一秒钟,因此它显示为零整秒。

ISO 8601

不要使用时间格式跟踪已用时间。它含糊不清,令人困惑。并且根据您的格式细节会遇到这种小问题。

相反,请使用标准ISO 8601 format for a span of timePnYnMnDTnHnMnS,其中P标记开头,T将年 - 月 - 天与小时 - 分 - 秒分开。

您正在使用现在由java.time类取代的麻烦的旧日期时间类。

Instant

Instant类代表UTC中时间轴上的一个时刻,分辨率为nanoseconds

Instant instant = Instant.now(); 

让我们通过在未来几分钟的时间来模拟输入数据。

Instant future = instant.plus( 473 , ChronoUnit.MILLISECONDS );

Duration

Duration类表示从时间轴中未附加的时间跨度。

Duration duration = Duration.between( instant , future );

生成ISO 8601格式的字符串。

String output = duration.toString();  
  

PT0.473S

内部跟踪的数字为整秒,加上一小部分秒数,以纳秒为单位。所以把它想象成:

  

持续时间=(秒+纳米)

您可以要求整秒的总数和小秒的秒数。

long seconds = duration.getSeconds();
int nanos = duration.getNano();

关于java.time

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

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

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

大部分java.time功能都被反向移植到Java 6& ThreeTen-Backport中的7,并进一步适应Android中的ThreeTenABP(见How to use…)。

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