2013-12-01 3 views
-4

Что не так в этом методе? Возвращаемое значение пуст.NSDateFormatter не создает данные

-(NSString *)newFormatDateStringFromOldFormatStringForTableView:(NSString *)oldString 
{ 
// Old String "2013-11-29 15:00:00" 
// New Required Stirng 'Fri, 01 Dec 2013' 

// Convert string to date object 
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
//[dateFormat setDateFormat:@"EEE, dd MMM yyyy"]; 
[dateFormat setDateFormat:@"yyyy-MM-dd"]; 
NSDate *date = [dateFormat dateFromString:oldString]; 

// Convert date object to desired output format 
//[dateFormat setDateFormat:@"EEEE, MMMM d, YYYY"]; 
[dateFormat setDateFormat:@"EEE, dd MMM yyyy"]; 
NSString *newString = [dateFormat stringFromDate:date]; 
[dateFormat release]; 

return newString; 
} 

Спасибо за помощь.

+0

Есть тысячи примеров того, как использовать NSDateFormatter здесь. Посмотрите на некоторые из них. –

ответ

-2

Следующий код работал :)

+ (NSString *)userVisibleDateTimeStringForRFC3339DateTimeString:(NSString *)rfc3339DateTimeString { 
/* 
Returns a user-visible date time string that corresponds to the specified 
RFC 3339 date time string. Note that this does not handle all possible 
RFC 3339 date time strings, just one of the most common styles. 
*/ 

NSDateFormatter *rfc3339DateFormatter = [[NSDateFormatter alloc] init]; 
NSLocale *enUSPOSIXLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]; 

[rfc3339DateFormatter setLocale:enUSPOSIXLocale]; 
[rfc3339DateFormatter setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mm':'ss"]; 
[rfc3339DateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]]; 

// Convert the RFC 3339 date time string to an NSDate. 
NSDate *date = [rfc3339DateFormatter dateFromString:rfc3339DateTimeString]; 

NSString *userVisibleDateTimeString; 
if (date != nil) { 
    // Convert the date object to a user-visible date string. 
    NSDateFormatter *userVisibleDateFormatter = [[NSDateFormatter alloc] init]; 
    assert(userVisibleDateFormatter != nil); 
    [userVisibleDateFormatter setDateFormat:@"EEE, dd MMM yyyy"]; 
    userVisibleDateTimeString = [userVisibleDateFormatter stringFromDate:date]; 
}else{ 
    userVisibleDateTimeString=rfc3339DateTimeString; 
} 
return userVisibleDateTimeString; 

}

+1

Так что, если это сработало, почему вы не использовали его с самого начала? –

+0

@HotLicks, я искал подробности о спецификаторах формата и просто видел его, поэтому я попытался :) .. Есть ли что-то не так с этим подходом? – Zubair

+0

Ничего страшного в этом, небрежно. Может быть, немного излишним для вашего использования. –

2

Вы должны указать полный формат старой строки, как этот

[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 
+0

объект «дата» ничем не создает, его нуль. – Zubair

+0

@ Zubair Он должен работать. –

+0

Он должен, но не знаю, почему его не – Zubair

Смежные вопросы