Java应用程序正常运行时间未按预期显示

时间:2013-11-12 18:48:43

标签: java time date-format

我正在尝试让我的应用程序在用户命令上打印其正常运行时间,但是在执行时会生成以下内容: Current up-time: 01:00:07:34 实际正常运行时间为00:00:07:34。我花了一些时间对此进行类似的问题,大多数人都说要么将时区设置为GMT,要么使用外部时间API。当我试图将依赖性保持在最低限度时,我试图避免使用外部API只是为了简单地获得正常运行时间。我将时区设置为GMT,但它只是修复了小时(它​​曾用01:01:07:34作为正常运行时间。)

我的代码是这样的:

            case "uptime":
                long uptime = System.currentTimeMillis()-MainClass.getStartTime();
                DateFormat formatter = new SimpleDateFormat("DD:HH:mm:ss");
                formatter.setTimeZone(TimeZone.getTimeZone("GMT"));
                System.out.printf("Current up-time: %s\n", formatter.format(new Date(uptime)));
                return true;

任何人都知道如何才能让它产生合理的输出?

2 个答案:

答案 0 :(得分:1)

Date(long time)构造函数创建一个新对象,其中包含1970年1月1日00:00:00 GMT之后的日期 time 毫秒(请参阅JavaDoc)。您实际上想要格式化时间段,而不是日期。 JDK没有为此提供任何方法。您可以自己实现一个期间格式化程序,也可以使用像joda这样的库提供一个(joda:PeriodFormatterPeriodFormatterBuilder)。

答案 1 :(得分:0)

D是一年中的一天。使用d表示某一天。

  DateFormat formatter = new SimpleDateFormat("dd:HH:mm:ss");