如何使用 NSDateFormatter iOS 格式化日期?

How to format date using NSDateFormatter iOS?

我尝试使用 NSDateFormatter 来格式化从 UIDatepicker 中选择的日期。但是格式化结果给出了nil

-(NSString *)formatDateWithString:(NSString *)date{ 
    NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
    dateFormatter.dateFormat = @"yyyy-MMM-dd HH:mm:ss";
    NSDate *formattedDate = [dateFormatter dateFromString:date];
    return [dateFormatter stringFromDate:formattedDate];
}

日期输入为2016-04-22 16:30:36 +0000(从 UIDatePicker 中选择后)。我该如何解决这个问题?

如评论中所述,您可以直接从 UIDatePicker 获取 NSDate 并直接在格式化程序中传递该日期

NSDateFormatter * formatter =  [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MMM-dd HH:mm:ss"];
NSString *dateString = [formatter stringFromDate:datePicker.date];//pass the date you get from UIDatePicker

如果您想按照问题中提到的方式进行转换,可以这样尝试:

-(NSString *)formatDateWithString:(NSString *)date{
    NSDateFormatter * formatter =  [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss z"];
    NSDate * convrtedDate = [formatter dateFromString:date];
    [formatter setDateFormat:@"yyyy-MMM-dd HH:mm:ss"];
    NSString *dateString = [formatter stringFromDate:convrtedDate];
    return dateString;
}