0

我试图让我的应用程序在用户的命令上打印其正常运行时间,但是它在执行时会产生以下内容: 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;

任何人都知道我怎样才能得到这个来产生一个理智的输出?

4

2 回答 2

1

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

于 2013-11-12T18:57:29.300 回答
0

D是一年中的一天。用于d月份中的某天。

  DateFormat formatter = new SimpleDateFormat("dd:HH:mm:ss");
于 2013-11-12T18:52:34.507 回答