2016-01-13 4 views
0

Привет У меня есть формат даты в ISO8601, как, например:Как получить только дату с ISO8601 timestamp как строку ios?

NSString *currentDateString = @"2016-01-12T21:21:22.737+05:30"; 

я хочу, чтобы получить только дату, которая 2016-01-12 из этой строки:

я попытался

[dateFormatter setDateFormat:@"yyyy-MM-dd"]; 
NSDate *currentDate = [dateFormatter dateFromString:currentDateString]; 
NSLog(@"CurrentDate:%@", currentDate); 

его перенастройка null, но я хочу получить дату в формате yyyy-MM-dd.

+0

Строка формата в форматировании даты должна соответствовать строке, которую вы конвертируете. Поскольку ваша строка имеет намного больше, чем 'yyyy-MM-dd', форматирование даты не может ее разобрать. –

ответ

0

Найдено решение с использованием NSRange:

NSString *currentDateString = @"2016-01-12T21:21:22.737+05:30"; 
NSRange range = [currentDateString rangeOfString:@"T"]; 
NSString *newString = [currentDateString substringToIndex:range.location]; 
NSLog(@"%@",newString); 
+0

Это неправильный подход, так как он выполняет операцию типа string. –

+0

Если вы знаете, что лучший способ сделать это также принимается. – Nagarjun

+0

Серьезная проблема с этим решением (предполагая, что ваш пароль 'newString' в формат даты в вашем вопросе). Усекая строку, вы теряете часовой пояс, указанный в исходной строке. Это означает, что формат даты будет обрабатывать строку как локальное время, а не в часовом поясе, указанном в исходной строке. – rmaddy

0

Пожалуйста, попробуйте этот код.

NSString *dateString = @"2013-04-18T08:49:58.157+0000"; 
NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZ"]; 
// Always use this locale when parsing fixed format date strings 
NSLocale *posix = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]; 
[formatter setLocale:posix]; 
NSDate *date = [formatter dateFromString:dateString]; 
NSLog(@"date = %@", date); 
+0

попробовал это, но не работал. – Nagarjun

+0

Ваше решение все еще печатает дату = 2013-04-18 08:49:58 + 0000.Это не решение, которое я искал. – Nagarjun

+0

Это решение преобразует строку в формат NSDate, после чего вы можете изменить любой формат. –

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