2013-02-01 80 views
-2

我有一个NSDateformatter工作不正常。我以这样的字符串得到了我的日期。NSDateformatter格式不正确

2013-02-20 00:00:00 

,我需要它返回作为一个NSDate这样

2013-02-20 

什么我目前得到的是这个。

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
[dateFormat setDateFormat:@"yyyy-MM-dd hh:mm:ss"]; 

[dateFormat setDateFormat:@"yyyy-MM-dd"]; 
[dateFormat dateFromString:dateString] 

但这不起作用。 有什么帮助吗?

+0

你设置第二格式从字符串中提取的日期之前,你不存储提取日期的任何地方,然后你永远不转换追溯到一个字符串。 (请注意,NSDate中不包含任何格式信息。) –

+3

(基本上,你没有想到你正在做什么,但你有责任在NSDateFormatter上指责它。) –

+0

“foggiest idea ... “ - 现在多数民众赞成是我会肯定同化的一个词组! – vikingosegundo

回答

2

,如果你有一个以上的日期来分析,它可能是值得创建一个输入和一个输出日期格式

static NSDateFormatter *inputDateFormatter; 
static NSDateFormatter *outputDateFormatter; 
if (!inputDateFormatter) { 
    inputDateFormatter= [[NSDateFormatter alloc] init]; 
    [inputDateFormatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"]; 

    outputDateFormatter = [[NSDateFormatter alloc] init]; 
    [outputDateFormatter setDateFormat:@"yyyy-MM-dd"]; 
} 
NSDate *date = [inputDateFormatter dateFromString:@"2013-02-20 00:00:00"]; 

NSString *string = [outputDateFormatter stringFromDate:date]; 

NSLog(@"%@", string); 

结果

2013-02-20 

为NSDateFormatter是创建,你贵应该将它们存储在单例中,或者声明它们是静态的,以便为该方法创建一次。


,我需要它返回作为一个NSDate这样

一个日期有没有格式,它仅仅是一个时间点。您需要在需要的地方创建所需格式的字符串。

+1

请保留原来的评论:-1,因为您应该使用过一个格式化程序,并且让事情变得更加困难。 –

+0

@RamyAlZuhouri,你会如此善意地解释,为什么它应该是一个格式化程序? – vikingosegundo

+1

在OOP中,如果你需要多次使用一个变量,你可以创建一个类实例变量。现在,如果我不得不使用这段代码N次,我就会这样做,而且我不会使用静态变量。现在这是无关紧要的,因为我们应该把讨论延伸到整个OP课程,这不是问题的主题。 –

4
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
[dateFormat setDateFormat:@"yyyy-MM-dd hh:mm:ss"]; 
NSDate* date=[dateFormat dateFromString: dateString]; 
[dateFormat setDateFormat:@"yyyy-MM-dd"]; 
NSLog(@"%@",[dateFormat stringFromDate: date]); 

这将工作 尝试

+1

+1这应该是正确的答案。 –

+0

如果这行应该执行多次,这不会被执行。 NSDateFormatters非常昂贵。他们应该以某种方式重新使用。 – vikingosegundo

+0

所有良好的Objective-C实践仍然有效。这只是一个解释性代码片段。根据需要,每个用户都将决定如何处理这些代码。 –