如何使用格式化程序将字符串日期转换为 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?的主要内容,如果未能解决你的问题,请参考以下文章
使用字符串格式“Sun, 08 Jan 2012 13:57:38 +0000”将 NSString 转换为 NSDate