banner
李大仁博客

李大仁博客

天地虽大,但有一念向善,心存良知,虽凡夫俗子,皆可为圣贤。

iOS開發中,使用NSDateFormatter時,NSLocale應該使用en_US_POSIX還是en_US?

iOS SDK 提供的日期時間格式化對象需要使用到 NSLocale 對象來控制日期和時間的顯示,en_US 為標準的格式往往使用的最多,但是習慣使用 Java 或 C# 的朋友會忽略掉 iOS SDK 提供的另一種格式 en_US_POSIX,並且兩種格式運行後的效果完全一樣。

參考代碼:

NSDateFormatter *formatter1 = [[[NSDateFormatter alloc] init] autorelease];
[formatter1 setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] autorelease]];
NSDateFormatter *formatter2 = [[[NSDateFormatter alloc] init] autorelease];
[formatter2 setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease]];

[formatter1 setDateFormat:@"yyyy/MM/dd HH:mm"];
[formatter2 setDateFormat:@"yyyy/MM/dd HH:mm"];

NSDate *date = [NSDate date];
NSLog(@"formatter1:%@",[formatter1 stringFromDate]);
NSLog(@"formatter2:%@",[formatter2 stringFromDate]);

到底使用 en_US_POSIX 還是 en_US,Apple 在 SDK 文檔中給出了答案。

在大多數情況下,最好選擇的區域設置是 "en_US_POSIX"。

因為

"en_US_POSIX" 在時間上也是不變的(如果美國在將來某個時候更改日期格式的方式,"en_US" 將會反映新的行為,但 "en_US_POSIX" 不會),並且在不同的設備上也是一致的("en_US_POSIX" 在 iPhone OS 上的工作方式與在 Mac OS X 上的工作方式相同,以及在其他平台上的工作方式)。

參考鏈接 http://stackoverflow.com/questions/6613110/what-is-the-best-way-to-deal-with-the-nsdateformatter-locale-feature http://developer.apple.com/library/ios/#qa/qa1480/_index.html

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。