2013-02-27 132 views
3

因此,我只想顯示從我們的服務器傳遞到我的iOS應用程序標籤中的時間,但我無法解決如何設置正確的NSDateFormatter。舉例來說,我從服務器獲取這種格式的時間戳:2013-02-27T18:15:00-0800,我基本上想在標籤中顯示「10:15 AM」,但到目前爲止我還沒有運氣。我試過以下:從ISO 8601時間戳顯示12小時時間格式

NSDateFormatter *timeFormatter = [[[NSDateFormatter alloc] init] autorelease]; 
      [timeFormatter setDateFormat:@"HH:mm a"]; 
      NSString *newTime = [timeFormatter stringFromDate:timeDate]; 
      NSLog(@"the new time is: %@", newTime); 

但輸出顯示我的時間爲18:15 PM。

我一直在環顧四周,嘗試在NSDateFormatter中的不同組合,但我似乎無法找到正確的,任何幫助將不勝感激,因爲我知道這是簡單的東西,我俯視,但我只是找不到它。

+1

嘗試HH代替HH的格式,按照http://unicode.org /reports/tr35/tr35-6.html#Date_Format_Patterns(尚未測試過)。 – Larme 2013-02-27 19:57:09

回答

5

HH代表24小時。

hh值12小時。

相應地改變。

+0

我知道這是我沒有看過的簡單的東西。儘管獲得12小時格式是正確的,但它看起來像格式化程序也沒有使用偏移量,所以上面的示例顯示爲6:15 PM而不是10:15 AM。謝謝。 – 2013-02-27 20:06:40

0

您需要使用hh而不是HH。前者爲12小時,後者爲24小時。

1

你正在設置24小時格式的HH格式,以設置12小時格式使用下面的代碼,雖然沒必要寫很多,如代碼行所示。

[timeFormatter setDateFormat:@"hh:mm a"]; 

爲了避免時區問題,請確保您設置的時區的格式以及

[timeFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"CET"]]; 
+0

有點簡潔......請編輯答案並告訴它做了什麼。 – nalply 2013-02-27 20:16:32