如何将 NSString 转换为日期格式的字符串

How to convert NSString to a date formattted string

我有一个值为 01012016 的字符串,我想将其显示给 01-01-2016 之类的用户。为此,我使用以下代码

-(NSString *)dateToFormatedDate:(NSString *)dateStr {

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]];

    [dateFormatter setDateFormat:@"MM-dd-yyyy"];
    NSDate *date = [dateFormatter dateFromString:dateStr];

    NSLog(@"date is %@", [dateFormatter stringFromDate:date]);
    return [dateFormatter stringFromDate:date];
}

但是这个方法总是返回零。我已经在模拟器和设备上都试过了。 我无法弄清楚我在这里做错了什么

您的 NSDateFormatter 格式与您尝试传递的字符串不匹配。看看这个相关问题...

Converting a string to an NSDate

您要做的是设置 NSDateFormatter 以匹配字符串,然后从字符串创建 NSDate 对象后,将 NSDateFormatter 更改为您想要的输出格式。像这样...

-(NSString *)dateToFormatedDate:(NSString *)dateStr {

  NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
  [dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]];

  [dateFormatter setDateFormat:@"MMddyyyy"];
  NSDate *date = [dateFormatter dateFromString:dateStr];
  [dateFormatter setDateFormat:@"MM-dd-yyyy"];

  NSLog(@"date is %@", [dateFormatter stringFromDate:date]);
  return [dateFormatter stringFromDate:date];
}