1

JDK または Guava に 1 日の時間を表すクラスがありますが、必ずしも特定の日付の特定の時間を表すわけではありませんか? そうでない場合、なぜですか?

4

3 に答える 3

1

JDK 1.3-1.7 では、答えはノーです。閏年や閏月などの頭痛の種に対処する必要がないため、日付よりも 1 日の特定の時刻を計算する方がはるかに簡単です。単純な整数で十分です。SimpleDateFormatter などを使用して時刻をロケール文字列に変換する必要がある場合は、時刻を日付に変換するだけで、日付部分は無視できます。

int time = 8 * 60 + 34; // 8:34 am
Date date = new Date(60000L * time);

タイム ゾーンを +0 にリセットし、日付をフォーマッタに渡します。

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
sdf.setTimeZone(TimeZone.getTimeZone("GMT+0"));
sdf.format(date);
于 2011-07-12T00:58:35.237 に答える
1

a をクラスに単純にラップbyteし、現在の時間がincrement()(または適切な名前の) メソッド内で 23byteを通過するたびに、の値を 0 に設定し、値がdecrement()(または適切な名前の) メソッドで 0 を下回るたびに、の値byteを 23 に設定します。

于 2011-07-12T01:02:30.663 に答える
0

私の知る限り、Hour(JDKまたはGuavaで)表す特定のクラスはありませんが、特定の時間のインスタンスから時間を取得するための使いやすいクラスがあります(これは、あなたがこれを求めていると私が想定しているものです)質問)。

Paŭlo Ebermann が言及しているように、JODA-Time を使用できますが、それは外部ライブラリです。JDK 内には、Calendar多くの便利なメソッドを持つ というクラスがあります。

現在の時刻を表すa の時間を取得するにはlong、次のようにします。

Calendar c = Calendar.getInstance();
c.setTimeInMillis(System.currentTimeMillis());
int hour = c.get(Calendar.HOUR); //returns 0-11
int hourOfDay = c.get(Calendar.HOUR_OF_DAY); //returns 0-23
于 2011-07-12T00:39:48.613 に答える