2016-03-18 4 views
-2

NSString形式の日付を取得する "2016-03-16T00:00:00.000 + 05:30" 次のメソッドを使用してNSStringの日付を適切なNSDate形式に変換してnullを返す。nullのiOSを返すNSString形式の日付?

NSDate *dateFromString = [[NSDate alloc] init]; 

いずれも行いません。

NSString *dateString = @"2016-03-16T00:00:00.000+05:30"; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 

[dateFormatter setDateFormat:@"yyyy-MM-dd'T'hh:mm:ssZZZ"]; 
NSDate *dateFromString = [[NSDate alloc] init]; 

dateFromString = [dateFormatter dateFromString:dateString]; 

//dateFromString returns null. 

Plsのは、私はこのコードで

NSString *strDateFor = [polygon valueForKey:@"effective_from"]; 
    NSDateFormatter *dateformate=[[NSDateFormatter alloc]init]; 
    [dateformate setDateFormat:@"yyyy-MM-dd 'T' HH:mm:ss ZZZZ"]; 
    NSDate *date = [dateformate dateFromString:strDateFor]; 
    NSLog(@"date : %@",date); //null 
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc]init]; 
    [dateFormat setDateFormat:@"dd-MM-yyyy"]; 
    NSString *strDate = [dateFormat stringFromDate:date]; 
    NSLog(@"The strDate is - %@", strDate); //null 

再びヌル

+0

は、どのように私はこれを修正する必要があります? – Bangalore

+1

文字列と書式を比較します。彼らは一致しません。 – gnasher729

答えて

2

まずオフを更新しました

、ラインを助けますあなたがないからセンスここで作成しているNSDateインスタンスを使用します。ちょうどそれを残す。

第2に、常には、このような日付文字列を解析すると、日付フォーマッタのlocaleを設定します。既定では、NSDateFormatterはユーザーの現在のロケールを使用します。これは何でも構いません。そのため、依存することはできません。将来は変更されないことが保証されているので、おそらくen_US_POSIXロケールが必要です。

第3に、分数秒(.SSS)を指定していないため、日付書式文字列が間違っています。

これは動作します:

NSString *dateString = @"2016-03-16T00:00:00.000+05:30"; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'hh:mm:ss.SSSZZZ"]; 
NSDate *dateFromString = [dateFormatter dateFromString:dateString]; 
+0

はい、その作業。私は何をすべきなのでしょうか? – Bangalore