2015-06-22 35 views
0

现在它的工作原理与此代码:的NSString的NSDate不起作用

NSString *myDate = @"06/18/2015 8:26:17 AM"; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"MM/dd/yyyy hh:mm:ss a"]; 
[dateFormatter setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US"]]; 
NSDate *date = [dateFormatter dateFromString:myDate]; 
[dateFormatter setDateFormat:@"dd.MM. HH:mm"]; 
NSString *dateString = [dateFormatter stringFromDate:date]; 
cell.timeLabel.text = dateString; 
+1

除了日期格式是完全错误的,也没有必要'分配/ init'了'NSDate'对象。 – rmaddy

+0

当你在用户界面中使用这个日期时,我建议你使用苹果公司的preifined日期样式之一[这里](https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/DataFormatting/Articles /dfDateFormatting10_4.html)。它为您处理所有不同的用户区域设置。 – Imotep

回答

2

你必须设置日期格式字符串

NSString *myDate = @"06/18/2015 8:26:17 AM"; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"MM/dd/yyyy h:mm:ss a"]; 
NSDate *date = [dateFormatter dateFromString:myDate]; 
//Set New Date Format as you want 
[dateFormatter setDateFormat:@"dd.MM. HH:mm"]; 
[dateFormatter setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US"]]; 
NSLog(@"%@",[dateFormatter stringFromDate:date]); 
+0

这是不对的。日和月是倒退的,它不是2位数的小时。 – rmaddy

+0

此外,OP似乎想要更改日期的格式,因此答案应该显示如何使用两种不同的日期格式来获得所需的结果。 – rmaddy

+0

编辑答案@rmaddy感谢引脚点:) –

0

我认为没有什么错在你的代码Dohi7因为我测试了它,并且日期显示正确,使用了@“dd.MM。HH:mm”和@“dd.MM。H:mm”两种格式。请通过在控制台中打印再次检查dateFromString的值。

而且阿什什也是正确的。你不需要分配数据对象,你可以直接使用自己返回NSDate对象的dateFromString函数。

0

谢谢你,现在它与下面的代码:

NSString *myDate = @"06/18/2015 8:26:17 AM"; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"MM/dd/yyyy hh:mm:ss a"]; 
[dateFormatter setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US"]]; 
NSDate *date = [dateFormatter dateFromString:myDate]; 
[dateFormatter setDateFormat:@"dd.MM. HH:mm"]; 
NSString *dateString = [dateFormatter stringFromDate:date]; 
cell.timeLabel.text = dateString;