2

我试图将时间差显示为一个字符串,该字符串遵循 00:00:00(小时:分钟:秒)的形式,零填充。我有以下代码:

long timeDiff = System.currentTimeMillis() - mStartRecordingTime;
time = DateFormat.format("hh:mm:ss", timeDiff).toString(); 

当 timeDiff 不超过几秒钟但小时不显示为 00 时,我正在测试它。顺便说一下,我在 JST 时区。

4

4 回答 4

2

使用SimpleDateFormat

long timeDiff = System.currentTimeMillis() - mStartRecordingTime;
String time = new SimpleDateFormat("hh:mm:ss").format(new Date(timeDiff)); 
于 2012-01-08T02:24:28.263 回答
2

你从哪里得到 mStartRecordingTime?在我看来,它不像是在同一语言环境中使用 System.currentTimeMillis() 设置的;如果是这样,那么时差将反映实际差异,这将起作用。似乎录制时间以某种方式设置为 UTC,距 JST 9 小时。

另一张海报是正确的,使用此值生成的日期将接近纪元,但如果您只是想获得小时、分钟和秒,那么您应该没问题。请记住,您处理的是经过时间,而不是时钟/日历时间,所以我不希望日期格式(而不是时间格式)对您有用。

于 2012-01-08T02:45:20.577 回答
0

您需要补偿时区。有了你所拥有的,更改日期格式化程序以使用 UTC 作为时区可能是最简单的。这是一些应该有帮助的代码:

    long timeDiff = System.currentTimeMillis() - mStartRecordingTime;
    DateFormat df = new SimpleDateFormat("HH:mm:ss");
    df.setTimeZone(TimeZone.getTimeZone("UTC"));
    String time = df.format(new Date(timeDiff));

请注意,更改为“HH”是日期格式,以 24 小时格式显示时间。

于 2012-01-08T02:44:56.877 回答
0
于 2016-09-18T03:20:02.500 回答