2012-01-13 69 views
1

我有這個字符串:2012-01-12T21:01:00和驗證碼:如何從的NSString轉換成NSDate的使用NSDateFormater

NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
    [df setDateFormat:@"yyyy-MM-dd hh:mm:ss a"]; 
    NSDate* arrivalTime=[df dateFromString:field_arrival_time]; 

但它返回nil。我應該用什麼日期格式來解析這個字符串?

回答

1

你的字符串2012-01-12T21:01:00包含文字T(至少我認爲這是一個文字,它似乎並不意味着一個時區)。您必須將其包含在日期格式中。

[df setDateFormat:@"yyyy-MM-dd'T'hh:mm:ss"]; 

注意缺少的日期格式a的,使用它會要求你輸入字符串使用的上午或下午由空格前面。欲瞭解更多關於NSDateFormatter特殊字符的信息,請查看Date Formatting Guide,特別注意固定格式

編輯:您輸入的字符串沒有指定時區,當您通過NSLog()輸出時,它可能會被解釋爲UTC並被本地化爲本機的時區。

0

我已經嘗試了很多對你的字符串,但從來沒有得到結果。控制檯上只有零個節目。但是當我從字符串中刪除字符「T」時,它會給出完美的結果。

[f setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 
NSDate *date = [f dateFromString:@"2012-01-12 21:01:00"]; 
NSLog(@"date %@", date); 
NSDateFormatter *f2 = [[NSDateFormatter alloc] init]; 
[f2 setDateFormat:@"dd-MM-yyyy"]; 
NSString *s = [f2 stringFromDate:date]; 
NSLog(@"S %@", s); 
/// OutPut : S 12-01-2012