按在對方的回答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