我只需将格式为“2013:07:24 11:05:04”的日期格式化为此格式“24-lug-2013”,这是我用来执行此操作的代码:< / p>
NSDateFormatter *dtF = [[NSDateFormatter alloc] init];
[dtF setDateFormat:@"yyyy:MM:dd hh:mm:ss"];
NSDate *d = [dtF dateFromString:self.creationDate];
NSDateFormatter *dateFormatStr = [[NSDateFormatter alloc] init];
[dateFormatStr setDateFormat:@"d-MMM-yyyy"];
NSString *strDate = [dateFormatStr stringFromDate:d];
NSLog(@"%@",strDate);
这段代码工作正常,问题是经过几次调用此方法后,有时我得到一个空字符串,但输入的格式仍然相同。
例如,使用此字符串作为输入“2013:07:24 11:05:04”我得到这个:24-lug-2013,这正是我想要的,但是在这种情况下7次调用之后,这个输入“2013:07:24 13:47:31”我得到一个空的NSDate,结果是null的结果字符串。
问题在哪里? 感谢答案 0 :(得分:2)
当传递给它们的日期字符串与格式不匹配时,日期格式化程序返回nil。您发布的代码在输入字符串上使用dateFromString。如果失败,则NSDate“d”将为nil,因此对stringFromDate的调用也可能返回nil。 (尽管如果传入NSDate为nil,stringFromDate也可能会崩溃)
答案 1 :(得分:1)
我通过改变这一行解决了:
[dtF setDateFormat:@"yyyy:MM:dd hh:mm:ss"];
用这个:
[dtF setDateFormat:@"yyyy:MM:dd HH:mm:ss"];
这是因为“hh”表示小时,意味着1到12到14:00之间的值,例如,会失败。所以如果你想要24小时格式使用“HH”