如何使用格式化程序将字符串日期转换为 nsdate?

Posted

技术标签:

【中文标题】如何使用格式化程序将字符串日期转换为 nsdate?【英文标题】:how to convert string date to nsdate using formatter? 【发布时间】:2016-06-13 11:35:32 【问题描述】:

我遵循 *** 的答案并编写代码,但我不知道发生了什么。它不起作用。 PLZ,任何人都可以为我解决它。我使用愚弄代码....

        NSMutableArray *movieDate;
    NSArray *temp1 = [_dicUpcomingMovie objectForKey:@"results"];
    for (NSDictionary *temp2 in temp1)
    
        NSDateFormatter *formatter = [[NSDateFormatter alloc]init];

        NSString *datestring = [temp2 valueForKey:@"release_date"];
        //NSDate *myDate = [[NSDate alloc]init];
        [formatter setDateFormat:@"dd MMM,YYYY"];
        NSDate *date = [formatter dateFromString:datestring];
        NSLog(@"%@",date);
        [movieDate addObject:date];
        NSLog(@"%@",movieDate);
    

就是这样。上面的代码不起作用 myDate 对象仍然为零

【问题讨论】:

你的日期格式是什么,请打印数组或字典数据? 我猜datestring 和 dateFormat (dd MMM, YYY) 不匹配(这是最好的猜测,但您没有提供示例)。此外,避免在循环中每次都执行 NSDateFormatter 对象的分配/初始化。首先它非常消耗,而且你每次都使用相同的。 从at打印日期 因为 temp1 是一个 NSArray,所以 for 循环应该是 for (NSString *temp2 in temp1) 日期格式化程序仅在 dateFormat 与您尝试转换的字符串匹配时才有效。任何不匹配都会导致转换失败。发布失败的示例日期字符串,否则我们无法帮助您。 【参考方案1】:

我认为datestring 与您指定的格式不匹配。有关完整示例,请参阅 NSDateFormatter

【讨论】:

【参考方案2】:
    NSMutableArray *movieDate=[[NSMutableArray alloc]init];;
   NSArray *temp1 = [_dicUpcomingMovie objectForKey:@"results"];
  NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
    for (int i=0 ;i<temp1.count;i++)
  


    NSString *datestring = [[temp1   objectatindex:i]valueForKey:@"release_date"];

  [serverFormatter setTimeZone:[NSTimeZone localTimeZone]];
  [serverFormatter setDateFormat:@"dd,MMM,YYYY"];
   NSDate *date = [serverFormatter dateFromString:dateString1];

    [movieDate addObject:date];


   NSLog(@"%@",movieDate);

【讨论】:

因为不知道字符串日期格式,所以不行! 他可以知道格式并且他在他的问题中发布了相同的格式,如果它不起作用,他必须根据他的要求更改日期格式。这取决于他 但是您的答案和问题之间有什么区别。这不会像有问题的代码一样工作。【参考方案3】:

试试这个,

NSMutableArray *movieDate;
    NSArray *temp1 = [_dicUpcomingMovie objectForKey:@"results"];
    for (NSDictionary *temp2 in temp1)
    
        NSDateFormatter *formatter = [[NSDateFormatter alloc]init];

        NSString *datestring = [temp2 valueForKey:@"release_date"];
        //NSDate *myDate = [[NSDate alloc]init];
        [formatter setDateFormat:@"dd MM,YYYY"];
        NSDate *date = [formatter dateFromString:datestring];
        NSLog(@"%@",date);
        [movieDate addObject:date];
        NSLog(@"%@",movieDate);
    

【讨论】:

告诉我你在关键 release_date 获得的日期格式

以上是关于如何使用格式化程序将字符串日期转换为 nsdate?的主要内容,如果未能解决你的问题,请参考以下文章

将 UTC 日期格式转换为本地 nsdate

将UTC日期格式转换为本地nsdate

NSDate - 将日期转换为 GMT

将 NSDate 转换为 NSString

将 Adob​​e PDF 日期字符串转换为 NSDate

使用字符串格式“Sun, 08 Jan 2012 13:57:38 +0000”将 NSString 转换为 NSDate