2014-04-23 80 views
-1

我一直在很多应用程序和函数中使用相同的nsdateformatter样式和字符串,但有一个函数从后台线程调用,当我放置断点时,我看到NSDate成为nil当我使用datefromstringNSDateFormatter dateFromString返回为零的MM/dd/yyyy

NSString *start=[dataDict objectForKey:@"start_date"]; 
    NSString *end; 
    if (![[dataDict objectForKey:@"end_date"] isEqualToString:@""]) { 
     end=[dataDict objectForKey:@"end_date"]; 
    } 
    else 
    { 
     end=[dataDict objectForKey:@"estimate_end_date"]; 
    } 

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
    [formatter setDateFormat:@"yyyy"]; 

// NSLocale *enUSPOSIXLocale = [[NSLocale alloc] 
//         initWithLocaleIdentifier:@"en_US_POSIX"] ; 
// assert(enUSPOSIXLocale != nil); 
// [formatter setLocale:enUSPOSIXLocale]; 
// [formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]]; 

    NSDateFormatter *detailformatter = [[NSDateFormatter alloc] init]; 
    [detailformatter setDateFormat:@"MM/dd/yyyy"]; 

    NSDateComponents *dateComponents = [NSDateComponents new]; 
    dateComponents.year = year; 
    NSDate *newDate = [[NSCalendar currentCalendar]dateByAddingComponents:dateComponents 
                    toDate: _earliestDate 
                    options:0]; 

    NSString *plaincurrentYearString =[formatter stringFromDate:newDate]; 
    NSDate *plaincurrentYearDate=[formatter dateFromString:plaincurrentYearString]; 

    NSDate *startDatePlain=[formatter dateFromString:start]; 
    NSDate *endDatePlain=[formatter dateFromString:end]; 

enter image description here

为什么日期格式返回在上述情况下无?

+0

http://stackoverflow.com/questions/4258266/nsdateformatter-datefromstring-returns-nil – meda

回答

2

您使用了错误的格式:

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"yyyy"]; 
NSDate *startDatePlain=[formatter dateFromString:start]; 
NSDate *endDatePlain=[formatter dateFromString:end]; 

您需要使用您的detailformatter

NSDateFormatter *detailformatter = [[NSDateFormatter alloc] init]; 
[detailformatter setDateFormat:@"MM/dd/yyyy"]; 
NSDate *startDatePlain=[detailformatter dateFromString:start]; 
NSDate *endDatePlain=[detailformatter dateFromString:end]; 

你有正确的格式上detailformatter设置!

相关问题