首先粘一下我的方法闹司,很簡單就是將服務(wù)器返回的時間字符串轉(zhuǎn)換為date,問題是總有一部分給我返回nil
+(NSDate*)dateFromString:(NSString*)s format:(NSString*)str{
NSDateFormatter* f=[[NSDateFormatter alloc]init];
if(str==nil)
str = @"yyyy-MM-dd";
[f setDateFormat:str];
NSDate* d = [f dateFromString:s];
return d;
}
下面三組分別為這個方法的三個參數(shù)str披诗,s才顿,返回值
2015-07-22 10:56:35
yyyy-MM-dd hh:mm:ss
2015-07-22 02:56:35 +0000
2015-07-22 10:54:13
yyyy-MM-dd hh:mm:ss
2015-07-22 02:54:13 +0000
2015-07-20 13:59:36
yyyy-MM-dd hh:mm:ss
nil
可以看到我的時間字符串是24小時格式,但是采用的格式是 yyyy-MM-dd hh:mm:ss
接下來就說下問題所在
/*
NSDateFormatter?的一些格式介紹
[dateFormatter?setDateFormat:@"yyyy-
MM-dd?HH:mm:ss"];
?//這里要注意的是formatter的格式问词,如果是小寫的"hh",那么時間將會跟著系統(tǒng)設(shè)置變成12小時或者
24小時制。大寫的"HH"衔统,則強(qiáng)制為24小時制。
[dateFormatter?setDateFormat:@"yyyy年MM月dd日#EEEE"];EEEE為星期幾海雪,EEE為周幾
[dateFormatter?setDateFormat:@"yyyy-MM-dd?HH:mm:ss"];
[dateFormatter?setDateFormat:@"yyyy年MMMMd日"];//MMMM?為xx月锦爵,一個d可以省去01日前的0
*/
從上邊概念可以看到,我們返回的時間字符串是24小時的奥裸,但是因為設(shè)置的formatter是yyyy-MM-dd hh:mm:ss险掀,所以對于手機(jī)系統(tǒng)設(shè)置采用24小時的根本不會出現(xiàn)問題,但是有些手機(jī)采用12小時的就會出現(xiàn)問題了湾宙。
NSData 和NSDateFormatter的使用總結(jié) - CharlesBein_卞
- 博客頻道 - CSDN.NET?