2017-05-05 12 views
-3

私はNSStringとして日付を取得しようとしています。私はフォーマット2017-05-05T04で日付を受けています:42:44.954604Z以下NSDateFormatterを使用する日付書式

は私がNSDateFormatter

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
NSString *newdate = [utcDate stringByReplacingOccurrencesOfString:@"T" withString:@" "]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss.Z"]; 
msgDate = [dateFormatter dateFromString:newdate]; 

しかしmsgDateを適用しようとしているコードはnil

を示しているです
+1

utcDateは、ISO 8601形式で提供されています。この質問を見てください:http://stackoverflow.com/questions/17558859/convert-iso-8601-to-nsdate – pesch

+0

別の類似したhttp://stackoverflow.com/questions/28016578/swift-how-to-create-a -date-time-stamp-and-format-aso-8601-rfc-3339-utc-tim –

+0

十分な時間はないと思うが、 '2017-05-05T04:42:44.954604Z'と以下のように書く'yyyy-MM-dd HH:mm:ss.Z'です。 dateFormatが文字列の日付と一致しないと何が問題になりますか?それはあなたの問題を教えてくれるでしょうか? 「T」は何ですか?あなたのdateFormatでどのように解釈されますか?その他 – Larme

答えて

2

使用 'SS' 指定子を(試してみてくださいあなたが取得したい数字のアンバー - あなたのケースでは6)

[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSSSSZ"]; 

代わりの

NSString *newdate = [utcDate stringByReplacingOccurrencesOfString:@"T" withString:@" "]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss.Z"]; 

UPDATE

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"yyyyy-MM-dd'T'HH:mm:ss.SSSSSSZ"]; 
NSDate *msgDate = [dateFormatter dateFromString:@"2017-05-05T04:42:44.954604Z"]; 

OUTPUT

enter image description here

+1

はい、感謝しました –

+0

@MugheesMusaddiq - 更新された回答を確認してください –

0

SのNに等しい数で、この

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
dateFormatter.dateFormat = @"yyyy-MM-dd'T'HH:mm:ss.SSSSSSZ";// chang 
NSDate *date = [dateFormatter dateFromString:@"2017-04-13T05:57:44.886Z"]; 
NSString * msgDate = [dateFormatter stringFromDate:date]; 
// if get nil **date** try to change this time format 
0
#pragma mark- Change dateFormat method 
+ (NSString*) changeDateFormat:(NSString*)date 
{ 
    NSDateFormatter * formatter = [[NSDateFormatter alloc] init]; 

    [formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZ"]; 

    NSDate* fromDate = [formatter dateFromString:date]; 
    [formatter setDateFormat:@"YYYY.MM.dd"]; 

    NSString* formatedDate = [formatter stringFromDate:fromDate]; 

    if (formatedDate == nil) 
    { 
     [formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"]; 

     fromDate = [formatter dateFromString:date]; 
     [formatter setDateFormat:@"YYYY.MM.dd"]; 

     formatedDate = [formatter stringFromDate:fromDate]; 

    } 
    if (formatedDate == nil) 
    { 
     [formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"]; 

      fromDate = [formatter dateFromString:date]; 
     [formatter setDateFormat:@"YYYY.MM.dd"]; 

     formatedDate = [formatter stringFromDate:fromDate]; 

    } 

    return formatedDate; 

}