按在对方的回答Zaph的评论:S的最大数量为3更多的只是生产零。
E.g.
dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm:ss.SSSSSS"; // Last 3 'S' ignored.
Then @"2011-04-21 03:31:37.311396" will produce 2011-04-21 03:31:37.311000
要保持充分的微秒级精度试试这个神奇:
-(NSDate *)_dateFromUtcString:(NSString *)utcString{
if(!utcString){
return nil;
}
static NSDateFormatter *df = nil;
if (df == nil) {
df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
[df setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
}
NSArray* parts = [utcString componentsSeparatedByString:@"."];
NSDate *utcDate = [df dateFromString:parts[0]];
if(parts.count > 1){
double microseconds = [parts[1] doubleValue];
utcDate = [utcDate dateByAddingTimeInterval:microseconds/1000000];
}
return utcDate;
}
现在一个NSString “2011-04-21 03:31:37.310396” 将全面解析到一个NSDate 2011-04-21 03 :31:37.310396
秒和微秒之间的缺失点仅仅是文章中的错字? – 2011-04-21 23:44:45
你怎么知道这是不对的?尝试将其与毫秒值进行比较。 – Sulthan 2011-10-29 20:09:59