2016-11-14 58 views
2

這看起來像是一個iOS 10的錯誤。可以在iOS 8和9中使用。iOS 10的錯誤? NSDate小時描述與日本地區和24小時休息時間

[NSDate date] .description的小時描述是錯誤的。它附加了24小時說明和12小時說明。我沒有使用NSDateFormatter。只是默認設置。

一個真正的iOS 10設備,在設置:

  • 設定區域,以日本在設置>通用>語言&區>地區格式>區域
  • 設置24小時時間關在設置>常規>日期&時間> 24小時時間

然後:

NSLog(@"Date is %@", [NSDate date].description); 

實際日誌輸出:

Date is 2016-11-14 44:14:57 AM +0000 

預期輸出:

Date is 2016-11-14 4:14:57 AM +0000 

編輯(添加另一示例):

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
dateFormatter.dateFormat = @"yyyy-MM-dd hh:mm:ss a"; 
NSString *dateString = @"1985-04-12 7:20:50 PM"; 
NSDate *date = [dateFormatter dateFromString:dateString]; 
NSLog(@"Date is %@", date.description); 

實際輸出:

Date is 1985-04-12 1010:20:50 AM +0000 

預期歐tput的

Date is 1985-04-12 10:20:50 AM +0000 

如果我更改小時至24小時格式(HH):

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm:ss a"; 
NSString *dateString = @"1985-04-12 7:20:50 PM"; 
NSDate *date = [dateFormatter dateFromString:dateString]; 
NSLog(@"Date is %@", date.description); 

實際輸出:

Date is (null) 

預期輸出:

Date is 1985-04-12 10:20:50 AM +0000 
+0

24小時制未啓用,關閉 – unitwhy

+0

向Apple提交錯誤報告。一定要包括一個簡單的示例應用程序,複製問題,以便他們可以修復它。 – rmaddy

+0

我向蘋果提交了一個錯誤報告。感謝您的建議 – unitwhy

回答

0

我們也面臨iOS 10.x的類似問題,並修復它使用g

NSLocale * POSIXLocale = [[NSLocale alloc] initWithLocaleIdentifier:@「en_US_POSIX」]; dateFormatter.locale應該等於(POSIXLocale);