2011-08-01 23 views
2

我試圖檢索給定時間戳的本地化日期。我的代碼是這樣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") 

自2011年八月1日是星期一,結果字符串應該是「星期一」(假設英語語言環境),而是它是「太陽」!

+0

是否有可能parse3339失敗?你能看到一個'零'?嘗試設置未來的日期,看看它的'星期一'。 – ethrbunny

回答

5

time.normalize()必須被調用,否則值平日,yearDay,isDst和gmtoff都將是0。

正確的代碼:

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

感謝費米,誰把我在正確的軌道上指出,在某些情況下,時間可能time.parse3339轉換爲UTC()。

+0

謝謝你對我的幫助。一切都在星期天回來。現在,如果我在每個日期更改後正常化它的作品 –

1

你應該檢查返回值:從javadoc

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

如果解析返回週日落在你可能會得到這樣一個UTC時間。不知道如何可能給你上面的例子,但我想不出其他任何事情會做到這一點。

0

你是否真的需要解析給定的時間戳,或者你想現在得到日期嗎?在後者中,使用的情況下:

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