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

1月1日を表すため、日は01です。時間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日15分00:00:00GMTまたは:

1970年1月1日00:15:00GMT

1970年のこの日時のタイムゾーンでは、日は1で、時間は1です。

于 2012-10-09T13:42:08.690 に答える
0

答えは正しいです。SimpleDate.format(900000)ステートメントは、エポックを過ぎて900000ミリ秒の時間をフォーマットします。これは、最初の1時間の15分になります。

于 2012-10-09T13:43:02.900 に答える