2011-08-01 7 views
2

指定されたタイムスタンプのローカライズされた日を取得しようとしています。私のコードは、2011年8月の第一月曜日なので、結果の文字列(英語ロケールを想定)、「月」でなければなりませんが、その代わりに、それは「日」です!このAndroid Time.format( "%a")が曜日を正しく指定していません

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") 

のようなものです

+0

parse3339が失敗する可能性はありますか?あなたは「ゼロ」を見ることができますか?日付を先に設定し、その「月」があるかどうか確認してください。 – ethrbunny

答えて

5

time.normalize:後者は、使用する場合に特定の場合には時間がtime.parse3339()によってUTCに変換することができることを指摘することによって右のトラックに私を置くフェミ、へ

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

感謝。

+0

これはちょうど私を助けてくれてありがとう。すべてが日曜日に戻ってきた。今私は各日付の変更後に正常化する場合、それは動作します –

1

あなたは戻り値をチェックする必要があります:javadocから:

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

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

0

実際には、指定されたタイムスタンプを解析する必要がありますか、現在日付を取得しますか? :()そうでなければ平日、yearDay、isDstとgmtoffの値が全て0

あろう正しいコードは、呼び出されなければならない

Time time = new Time(); 
time.setToNow(); 
String result = time.format("%a");