6

我正在尝试以“天:小时:分钟:秒”的格式输出“900,000 毫秒”,我现在正在使用此代码:

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd:HH:mm:ss");
String formatted = simpleDateFormat.format(900000)

900,000 毫秒应该是 15 分钟,所以我希望它返回

00:00:15:00

或类似的东西......

但无论出于何种原因,它都会返回

01:01:15:00

谁能告诉我为什么以及如何解决它?

我认为它必须与时区有关,但它也增加了 1 天数......?

提前致谢!

4

4 回答 4

12

Day 是 01,因为它代表 1 月 1 日。01 小时可能与您的时区有关。尝试这个:

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd:HH:mm:ss");    
simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
String formatted = simpleDateFormat.format(900000);
于 2012-10-09T13:35:29.907 回答
8

通过使用你会出错SimpleDateFormat

SimpleDateFormat用于获取不计算时间的 DATE 实例

你应该使用TimeUnit

这是一个例子

 public static void main(String[] args) throws Exception {
        long millis = 900000;

        String s = String.format("%d min, %d sec",
                TimeUnit.MILLISECONDS.toMinutes(millis),
                TimeUnit.MILLISECONDS.toSeconds(millis)
                - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));

        System.out.println(s);


    }

这会让你

15 min, 0 sec

只需格式化您的内心内容并添加日期和时间......

于 2012-10-09T13:44:19.763 回答
7

传递给 SimpleDateFormat 的值 900,000 是一个时间点...... 1970 年 1 月 1 日 00:00:00 GMT 过去 15 分钟或:

格林威治标准时间 1970 年 1 月 1 日 00:15:00

在您所在时区的 1970 年的这个日期和时间,日为 1,小时为 1。

于 2012-10-09T13:42:08.690 回答
0

答案是正确的。SimpleDate.format(900000) 语句格式化过去 900000 毫秒的时间,即第一个小时的 15 分钟

于 2012-10-09T13:43:02.900 回答