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"]];