Objective c 使用NSDateFormatter设置日期格式

Objective c 使用NSDateFormatter设置日期格式,objective-c,nsdate,nsdateformatter,Objective C,Nsdate,Nsdateformatter,我正在尝试以NSString的形式获取日期。我收到日期的格式为2017-05-05T04:42:44.954604Z 下面是我试图应用的代码NSDateFormatter NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; NSString *newdate = [utcDate stringByReplacingOccurrencesOfString:@"T" withString:@" "]; [dateForma

我正在尝试以
NSString
的形式获取日期。我收到日期的格式为2017-05-05T04:42:44.954604Z

下面是我试图应用的代码
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

试试这个

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 
使用“SS”说明符(在您的情况下,S的数量等于您想要得到的位数-6)

而不是

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

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


您的utcDate是以ISO 8601格式提供的。看看这个问题:另一个类似的问题,我认为它说的次数不够多,但是写
2017-05-05T04:42:44.954604Z
和下面写
yyyy-MM-dd HH:MM:ss.Z
。dateFormat与字符串日期不匹配有什么问题?那会告诉你你的问题吗?“T”是什么意思?在您的dateFormat中它是如何解释的?等等。是的,成功了thanks@MugheesMusaddiq-检查更新的答案
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"];
 #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;

 }