我在iPhone应用程序中工作。我从webservice响应中获取日期。当我收到我在NSArray中存储的日期时。当我将NSString更改为NSDate时,日期返回null。这是我的代码,
for (int k = 0; k<[dateArray count]; k++)
{
NSString *dateStr = [dateArray objectAtIndex:k];
NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init];
[dateFormatter1 setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
[dateFormatter1 setFormatterBehavior:NSDateFormatterBehaviorDefault];
[dateFormatter1 setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
NSLog(@"DateStr : %@", dateStr); //Console Output is : 2012-07-09 13:50:07 [For 42nd and above values]
NSDate *date = [dateFormatter1 dateFromString:dateStr];
NSLog(@"Date : %@", date); // Console Output is : (null) [For 42nd and above values]
}
dateArray包含来自Webservice的43个日期值。 NSDateFormatter returns correct NSDate from NSString til 41nd values
。42nd string passing to the NSDateFormatter the output returns "(null)".
。当"(null)"
我尝试过,当日期再次返回null时,我再次转换dateFromString,发生{{1}}错误。有谁可以帮我解决这个问题?提前谢谢。
答案 0 :(得分:10)
尝试使用大写'HH'而不是'hh'。 ......小时1-12小时,HH小时0-23小时 - 也许13点是扔它?
答案 1 :(得分:2)
尝试在任何地方使用相同的NSDateFormatter
,并迭代forin
循环。你正在以你现在使用的方式泄漏大量内存。我无法保证这会解决您的问题,但至少它会清理您的代码。
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
for (NSString *dateString in dateArray) {
NSLog (@"Date %@ and index %i: NSDate representation is %@", dateString, [dateArray indexOfObject:dateString], [dateFormatter dateFromString:dateString]);
}
如果这不能解决您的问题,请记住以下几点:
timeZone
。字符串不包含时区,因此不会执行任何操作。formatterBehavior
。它会自动NSDateFormatterBehaviorDefault
。答案 2 :(得分:0)
你使用“yyyy-MM-dd hh:mm:ss”格式代替“yyyy-MM-dd HH:mm:ss”
hh是1-12小时,HH是0-23小时。你有0-23格式的小时。
[dateFormatter1 setDateFormat:@“yyyy-MM-dd HH:mm:ss”];