簡體   English   中英

NSDateFormatter問題,而NSDate只來自字符串

[英]Issue with NSDateFormatter, while NSDate from string with time only

我正面臨着NSDateFormatter有線問題。

以下是我的代碼:

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"hh:mma"];
NSString *currentHours = [formatter stringFromDate:[NSDate date]];
NSLog(@"Hours: %@", currentHours);

如果設備設置設置為在12小時內顯示時間(即AM&PM),則輸出為:

Hours: 12:40PM

如果設備設置設置為在24小時輸出中顯示時間為:

Hours: 12:41

這也影響了我的其他代碼。

NSDate *open = [formatter dateFromString:@"08:00am"];
NSDate *close = [formatter dateFromString:@"05:00"];

如果設備設置設置為在24小時內顯示時間,則兩個日期對象均為nil 在12小時的時鍾設置其工作正常。

如果任何人有相同的解決方案,請告訴我。

將formatter語言環境設置為:

formatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"];

但是,請注意,這將迫使a英語本土化“AM” /“PM”。 許多語言(包括我的)不使用后綴來表示“AM”/“PM”。

這是一個相當惱人的錯誤,但如果你關心本地化,你應該尊重用戶設置,不要強迫12h vs 24h時間。

理想情況下,您應該只設置格式化程序的樣式並讓它使用系統設置:

dateFormatter.dateStyle = NSDateFormatterNoStyle;
dateFormatter.timeStyle = NSDateFormatterShortStyle

將formatter的語言環境顯式設置為en_US_POSIX

formatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM