2012-06-20 2 views
0

У меня есть строка даты 2010-11-29T00: 00: 00 + 05: 30, и я хочу преобразовать ее в NSDate. Я хочу преобразовать его в 11/29/2010. Для этого я делаю что-то вроде этого.NSString для преобразования NSDate с использованием NSDateformatter

NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
textForLabel = @"2010-11-29T00:00:00+05:30"; 
[df setDateFormat:@"yyyy-MM-dd"]; 
NSDate *myDate = [df dateFromString:textForLabel]; 
NSLog(@"date : %@",myDate); 

Но вывод равен нулю.

Какой может быть формат даты на 2010-11-29T00: 00: 00 + 05: 30?

Я не понимаю, что здесь не так.

ответ

0

textForLabel = 2010-11-29T00: 00: 00 + 05: 30

Это не строка. Я сомневаюсь, что он даже скомпилируется, учитывая отсутствие конечной точки с запятой, но если это делает компилятор, вероятно, интерпретирует его как выражение и присваивает полученное число textForLabel. Для того, чтобы сделать его строку, сделайте следующее:

textForLabel = @"2010-11-29T00:00:00+05:30"; 
+0

Извините, что набрала ошибку, но это строка. Я обновил свой вопрос. – user1988

0

Попробуйте это,

NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
textForLabel = @"2010-11-29T00:00:00+05:30"; 
NSArray *components = [textForLabel componentsSeperatedByString:@"T"]; 
[df setDateFormat:@"yyyy-MM-dd"]; 
NSDate *myDate = [df dateFromString:[components objectAtIndex:0]]; 
NSLog(@"date : %@",myDate); 

Это не нужный метод, но будет работать :)

+0

Это будет работать с одним ограничением - сдвиг часовой пояс не всегда падает на ту же дату ... (+05: 30) – poncha

+0

poncha прав, не следует за моим – rakeshNS

1

Во-первых, избавиться от толстой кишки в часовой пояс, так как нет timezone format identifier для '+05: 30'

textForLabel = [textForLabel 
       stringByReplacingCharactersInRange:NSMakeRange(21,1) 
       withString:@""]; 

Тогда вы будете иметь эту строку: 2010-11-29T00:00:00+0530

следующий формат даты может быть использован:

[df setDateFormat:@"yyyy:MM:dd'T'HH:mm:sszzz"]; 

Похожие вопросы: iPhone NSDateFormatter Timezone Conversion

+1

Теперь есть код «ZZZZZ», который предположительно распознает часовой пояс с толстой кишкой. –

+0

Спасибо за обновление, @HotLicks – poncha

0
-(NSDate *) getDateFor :(NSString *)ICSDateString 
{ 
    int strLen = [ICSDateString length];  
    NSString * subString1 = [ICSDateString substringWithRange:NSMakeRange(0, strLen - 1)]; 
    NSLog(@"%d %d subString1 %@", strLen, subString1.length, subString1); 
    NSDateFormatter* df = [[NSDateFormatter alloc] init]; 
    [df setDateFormat:@"yyyyMMdd'T'HHmmss'Z'"]; 
    [df setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease]]; 

    NSDate* parsedDate = [df dateFromString:subString1]; 

    [df release]; 
    NSLog(@"parsedDate %@", parsedDate); 
    return parsedDate; 
} 

Думают, что это правильный путь, чтобы получить NSDate от ICS отформатирован даты. Посмотрите на this link для справки. Спасибо.

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