0

我是 Objective-c 的新手,我遇到了这个疯狂的问题……</p>

对于低精度测试用例:

dateString = @"2010-05-25 11:05:21",转换成功。

dateString = @"2010-03-01 15:54:36",转换失败。

对于高精度测试用例:

dateString = @"2010-05-25 11:05:21.937113",转换成功。

dateString = @"2010-03-01 15:54:36.937113",转换失败。

下面是我的代码:

// Date formatter
 NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
 NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
 [dateFormatter setFormatterBehavior:NSDateFormatterBehavior10_4];
 [dateFormatter setDateFormat:@"yyyy-MM-dd hh:mm:ss.SSSSSS"];
 [dateFormatter setLocale:locale];

NSDateFormatter *lowPrecisionDateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[lowPrecisionDateFormatter setFormatterBehavior:NSDateFormatterBehavior10_4];
[lowPrecisionDateFormatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
[lowPrecisionDateFormatter setLocale:locale];

// try high precision first, if fail, then go ahead to low precision. 
NSDate *date = [dateFormatter dateFromString:dateString];
if(!date){
  date = [lowPrecisionDateFormatter dateFromString:dateString];
}

任何帮助都非常感谢!

4

1 回答 1

4

这只是一个猜测,但我认为这与使用 24 小时制而不是上午和下午有关。我相信如果您在setDateFormat字符串中使用 HH 而不是 hh 它应该可以工作。

编辑:

实际上,在看了这篇博文后,我很有信心就是这样。

于 2010-05-25T19:33:52.227 回答