1

おそらく簡単で迅速な答えがあるでしょうが、私はまだなぜの結果であるかを知ることができません

Date date = new Date(60000); //one min.
SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
String dateStr = dateFormat.format(date);

dateStr-01:01:00まだ1時間以上。タイムゾーン?どうすればそれなしで設定できますか?ありがとう。

4

3 に答える 3

3

Date期間ではなく、特定の瞬間を表します。new Date(60000)「1分」は作成されません。そのコンストラクターのドキュメントを参照してください:

指定されたミリ秒値を使用して、このDateインスタンスを初期化します。値は、1970年1月1日GMTからのミリ秒数です。

「今から1分後」が必要な場合は、Calendar代わりにクラス、具体的にはaddメソッドを使用することをお勧めします。

アップデート:

DateUtilsあなたが役に立つと思うかもしれないいくつかの便利な方法があります。経過時間をHH:mm:ss形式で表示したい場合は、を試してみてくださいDateUtils.formatElapsedTime。何かのようなもの:

String dateStr = DateUtils.formatElapsedTime(60);

60は秒単位であることに注意してください。

于 2013-03-04T23:25:45.897 に答える
1

java.util.Date1分を指定するために使用する3つの方法:

1.shahtapaが言ったように使用するSimpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC"))

Date date = new Date(60*1000); //one min.    
SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
String dateStr = dateFormat.format(date);
System.out.println("Result = " + dateStr);  //Result should be 00:01:00

2. 歌舞伎java.util.Calendar が言ったように使用する:

Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(Calendar.MINUTE,1); //one min.
Date date = calendar.getTime();
SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
String dateStr = dateFormat.format(date);
System.out.println("Result = " + dateStr);  //Result should be 00:01:00

他のcalendar.set()ステートメントも使用できます。

calendar.set(Calendar.MILLISECOND,60*1000);  //one min.
calendar.set(1970,0,1,0,1,0);                //one min.

3. サイモン・ニッカーソンが言ったように、これらsetTimeZone Calendar アイデアを使用し、 UTCタイムゾーンCalendar に強制します。

Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
calendar.clear();
calendar.set(Calendar.MINUTE,1); //one min.
Date date = calendar.getTime();
SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
String dateStr = dateFormat.format(date);
System.out.println("Result = " + dateStr);  //Result should be 00:01:00

注:
同様の問題が発生しました:1970-01-01私の場合、日付は-3 600 000ミリ秒(1時間遅れ)でした
java.util.Date(70,0,1).getTime() -> -3600000

于 2013-03-20T10:38:54.517 に答える
0

TimeUnitの使用をお勧めします

「TimeUnitは、特定の粒度の単位での期間を表し、単位間で変換し、これらの単位でタイミングおよび遅延操作を実行するためのユーティリティメソッドを提供します。TimeUnitは時間情報を維持しませんが、時間表現を整理して使用するのに役立ちます。ナノ秒は、1000分の1マイクロ秒、マイクロ秒は1000分の1ミリ秒、ミリ秒は1000分の1秒、1分は60秒、1時間は60分、および24時間の日。」

http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/TimeUnit.html

Date date = new Date();  // getting actual date
date = new Date (d.getTime() + TimeUnit.MINUTES.toMillis(1)); // adding one minute to the date
于 2013-03-05T00:43:09.637 に答える