回答
你最好的選擇絕對是[someNSDateFormatter stringFromDate:someDate]或[someNSDateFormatter dateFromString:someString],但如果你真的想要做你所問的,看看Unicode standard for date format strings,這是什麼iPhone OS使用。
具體地,注意,用於AM/PM符號和h/HH/H/HH/K/KK是所有可能性的小時符號,這取決於它是否從0或1計數,是12或24小時,並填充零或不填。
你的代碼來實現,這可能是沿着線的東西:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterNoStyle];
[dateFormatter setTimeStyle:NSDateFormatterLongStyle];
if([[dateFormatter dateFormat] containsString:@"a"]) {
// do something
} else {
// do something else
}
[dateFormatter release];
但是,你必須要小心,因爲文字字符可以包含在單引號,所以你必須考慮到這。你可以嘗試尋找h或k,但要小心,因爲法國人代表14:05是2:05 pm(不知道它是如何顯示在iPhone上的,但這就是他們經常寫它的方式),所以時間格式可能包括類似k'h'mm
這不是語言環境設置,而是語言環境設置的集合。它是時間格式的一部分,其中有四個(至少在Mac上),它們並不一定使用相同的AM/PM名稱。在Mac上,甚至可以使用AM/PM段的24小時小時段,輸出像「17:35 PM」這樣的輸出,但仍然可能。
最簡單的方法是讓日期格式化程序從日期對象中爲您設置時間格式,假設這對您正在做的事情有意義。如果不是,有趣的時光正在朝你的方向前進。
在iPhone上,格式字符串的用戶界面只是一個切換開關(24小時開啓或關閉),所以您不必擔心病態情況。選擇AppleICUTimeFormatStrings
中的一個格式字符串作爲用戶默認值,然後解析它,查找AM/PM format characters之一。請確保跳過''
之間的任何內容,因爲該內容是一個文字字符串,而不是格式字符。
只要小心,如果你曾經把你的應用程序到Mac。如果你這樣做,我不會費心去嘗試理解格式字符串 - 只需在你自己的首選項中設置一個複選框即可。
- 1. 獲取ICU的當前區域設置
- 2. PHP:使用時區獲取當前區域設置
- 3. Php:獲取當前區域的時間
- 4. 如何獲取當前會話區域設置?
- 5. 獲取Windows的區域設置格式
- 6. Cocoa touch - 獲取設備信息
- 7. 如何在XSL中獲取當前的國家代碼/區域設置?
- 8. AEM中當前樣式和當前設計之間的區別
- 9. IOS - 以GMT格式獲取設備的當前時區
- 10. 如何在IE,Firefox,Webkit中獲取javascript中的當前文檔區域大小?
- 11. UIButton的Touch Drag/Exit命中區域的大小是怎樣的?
- 12. 在C#中獲取當前位置(在區域和語言中指定)
- 13. 時區支持值 - objective-c - cocoa-touch
- 14. Python根據時區/區域設置獲取星期開始
- 15. 如何使用Cocoa-Touch在時間前置零?
- 16. 獲取Vim中設置的當前值
- 17. 獲取區域設置的短代碼
- 18. Android Phonegap獲取區域設置
- 19. 獲取區域設置的WinRT
- 20. 如何在Android中獲取手機的當前區域碼(LAC)?
- 21. 如何在Android中以24小時格式獲取當前小時數?
- 22. 當設備時間格式設置爲24小時時獲取無日期
- 23. Asp.NET獲取當前域名
- 24. iOS 8:從Cocoa Touch Framework獲取資源
- 25. iPhone,從Cocoa Touch獲取播放列表
- 26. 如何使用Cocoa獲得當前小時?
- 27. 在Python中使用時區獲取當前時間?
- 28. 當$ LANG未初始設置時,區域設置:: TextDomain失敗
- 29. 如何以編程方式獲取/設置當前位置?
- 30. JavaScript的:獲取日期格式,從區域性設置
非常感謝!似乎比它的價值更麻煩(而且不是很健壯)......我只是在我的應用程序首選項下進行切換。 – 2009-12-14 09:57:26
如果你在iPhone應用程序中這樣做,用戶可能不希望看到它和/或可能稱爲冗餘,因爲在所有應用程序的設置(管理時間格式)中已經有這樣的開關。最糟糕的可能性是,審覈人員當天會遇到糟糕的一天,並會拒絕您的應用程序,因爲這種看似「重複的功能」。 – 2009-12-14 16:37:05