2011-11-16 71 views
0

我让用户在UITextField中输入日期。当我格式化字符串并将其输出到NSLog语句中时,我得到的日期值不正确。例如,当我输入11-16-2011 11:43到文本字段中时,我在日志中获得2010-12-26 16:43:00 +0000。我的代码如下:日志中的日期/时间不正确

NSString *dateString = dateTextField.text; 

//create a NSDateFormatter that can be used to create a NSDate from the string 
NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"MM-dd-YYYY hh:mm"]; 
[formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:-18000]]; 

//create a NSDate from the string using our formatter 
NSDate *alertTime = [formatter dateFromString:dateString]; 

NSLog(@"dateString is %@", alertTime); 

[formatter release]; 

谢谢!

回答

1

使用年份为yyyy。来自文档http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/DataFormatting/Articles/dfDateFormatting10_4.html#//apple_ref/doc/uid/TP40002369-SW1

它使用yyyy指定年份组件。常见的错误是使用 YYYY。 yyyy指定日历年,而YYYY指定ISO年份周历中使用的年度 (“年份周”)。在大多数 的情况下,yyyy和yyyy的产量相同,但它们可能与 不同。通常你应该使用日历年。

另外:

h小时[1-12]。

H小时[0-23]。

2

我在一周前发生了类似事情。经过一点挖掘,我不得不将我的格式从几个小写字母改为大写。

不知道这是否会工作,但尝试改变

[formatter setDateFormat:@"MM-dd-YYYY hh:mm"]; 

这样:

[formatter setDateFormat:@"MM-dd-yyyy HH:mm"]; 

P.S ......你可能会得到更多的答案,如果你开始接受帮助过你的答案。 :)

0

Louie的答案是正确的 - 但考虑使用UIDatePicker作为用户日期输入。