2

特定のタイムスタンプのローカライズされた日を取得しようとしています。私のコードはこのようなものです

String timestamp = "2011-08-01T15:55:03.000+02:00";
Time time = new Time();
time.parse3339(timestamp);
// In strftime format "%a" should be the abbreviated weekday name
// according to the current locale.
String result = time.format("%a")

2011 年 8 月 1 日は月曜日なので、結果文字列は "Mon" (英語のロケールを想定) になるはずですが、代わりに "Sun" です!

4

3 に答える 3

5

time.normalize() を呼び出す必要があります。そうしないと、weekDay、yearDay、isDst、および gmtoff の値がすべて 0 になります。

正しいコードは次のとおりです。

time.parse3339(timestamp);
time.normalize(false);
String localizedDayOfWeek = time.format("%a")

場合によっては time.parse3339() によって時刻が UTC に変換される可能性があることを指摘して、私を正しい軌道に乗せてくれた Femi に感謝します。

于 2011-08-02T12:22:56.280 に答える
1

戻り値を確認する必要があります: javadocから:

Returns true if the resulting time value is in UTC time.

解析が日曜日の UTC 時刻を返した場合、これが得られる可能性があります。上記の例を考えると、それがどのように可能になるかはわかりませんが、これを行う他の方法は考えられません.

于 2011-08-01T14:42:35.977 に答える
0

指定されたタイムスタンプを本当に解析する必要がありますか、それとも今すぐ日付を取得しますか? 後者の場合は、次を使用します。

Time time = new Time();
time.setToNow();
String result = time.format("%a");
于 2011-08-01T14:51:00.637 に答える