字符串轉化日期nil/得到日期偏差8小時

NSString*dateString = @"03 Aug 2016 03:50:24";

//設置日期格式

NSDateFormatter*dateFormatter = [[NSDateFormatteralloc]init];

[dateFormattersetDateFormat:@"dd MMM yyyy hh:mm:ss"];

//把日期字符串轉換為日期

NSDate*date = [dateFormatterdateFromString:dateString];

1.遇到的問題: 以上代碼在模擬器上運行正常,能夠得到正常的date,但是在真機上得到date為nil.

原因&&解決方法:

在模擬器(前提是模擬器的“設置”->“多語言環境”->“英國/美國”)下是能夠實現解析的,但是在真機調試時,卻無法解析。

那是因為在中國地區的,操作系統的環境一般都是“中國”、“中國香港”、“中國澳門等”,而上面的這種格式化字符串只針對英文操作系統的環境下才有效。

所以為了保證在任何設置下都能解析,我們需要對NSDateFormatter實例的locale屬性進行設置(強制采用“en-US”的方式進行轉換)

[dateFormattersetLocale:[[NSLocalealloc]initWithLocaleIdentifier:@"en_US_POSIX"]];

2.遇到問題:得到的日期時間 與字符串日期時間偏差8小時

原因&&解決方法:

缺少設置源日期所在時區(默認源日期所在時區為 設備設置時區--一般為北京所在東八區)

[dateFormattersetTimeZone:[NSTimeZonetimeZoneWithAbbreviation:@"UTC"]];

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容