[英]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.