【问题标题】:NSDateFormatter returning nil with dateFromStringNSDateFormatter 返回 nil 和 dateFromString
【发布时间】:2015-01-06 12:16:19
【问题描述】:

我正在使用以下代码使用 NSDateFormatter 将 yyyy-MM-dd 更改为 M-dd-yyyy 但 NSLog 返回值 nil。请帮忙。提前致谢。

NSString *trimmedDOB=@"1992-11-15";
NSDateFormatter *format = [[NSDateFormatter alloc] init];

[format setDateFormat:@"MM-dd-yyyy"];
NSDate *DateOfBirth=[format dateFromString:trimmedDOB];

NSLog(@"DATE IS %@",DateOfBirth);

【问题讨论】:

  • 问问自己:您的格式字符串是否完全类似于您要转换的日期格式??
  • 先形成一个日期,然后改变它的dateFormat。设置原始字符串的日期格式。使用NSDateFormatter 使用其格式形成日期。更改格式化程序的格式并转换。
  • 我正在尝试将 yyyy-MM-dd 转换为 MM-dd-yyyy。请告诉我我在哪里犯了错误。
  • dateFromString 方法将字符串转换为日期。 @Anupdas

标签: ios objective-c iphone nsdate nsdateformatter


【解决方案1】:
NSString *trimmedDOB=@"1992-11-15";
NSDateFormatter *format = [[NSDateFormatter alloc] init];

//Set your input format
[format setDateFormat:@"yyyy-MM-dd"];

//Parse date from input format
NSDate *dateOfBirth = [format dateFromString:trimmedDOB];

//Set your output format
[format setDateFormat:@"MM-dd-yyyy"];

//Output date in output format
NSLog(@"DATE IS %@",[format stringFromDate:dateOfBirth]);

【讨论】:

    【解决方案2】:

    如下更改您的代码:

    NSString *trimmedDOB=@"1992-11-15";
    NSDateFormatter *inFormat = [[NSDateFormatter alloc] init];
    [inFormat setDateFormat:@"yyyy-MM-dd"];
    NSDate *DateOfBirth=[inFormat dateFromString:trimmedDOB];
    NSDateFormatter *outFormat = [[NSDateFormatter alloc] init];
    [outFormat setDateFormat:@"MM-dd-yyyy"];
    NSLog(@"DATE IS %@", [outFormat stringFromDate:DateOfBirth]);
    

    【讨论】:

      【解决方案3】:
      NSString *trimmedDOB=@"1992-11-15";
      NSDateFormatter *dateformatterIn = [[NSDateFormatter alloc] init];
      [dateformatterIn setDateFormat:@"yyyy-MM-dd"];
      NSDate *DateOfBirth=[dateformatterIn dateFromString:trimmedDOB];
      NSDateFormatter *dateformatterOut = [[NSDateFormatter alloc] init];
      [dateformatterOut setDateFormat:@"MM-dd-yyyy"];
      

      【讨论】:

        【解决方案4】:

        每种日期格式对应一个日期格式。 由于您有 2 种日期格式(您要转换的日期字符串和要转换的日期字符串),您需要两个日期格式化程序。

        所以要从一个日期字符串转换为另一个:

        1. 创建“从”日期格式化程序(格式:yyyy-MM-dd)
        2. 将源“日期字符串”转换为“NSDate 对象”
        3. 创建“到”日期格式化程序(格式:MM-dd-yyyy)
        4. 将您在第 2 步中创建的“NSDate 对象”转换为最终的“日期字符串”

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-10-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-03-17
          相关资源
          最近更新 更多