изменить формат даты с 12/12/12 на 2012-12-12 ios6


Я пробовал :

  NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
  [dateFormatter setDateFormat:@"MM/dd/yyyy"];
  NSDate *dateCheck = [dateFormatter dateFromString:@"12/12/12"];
  NSLog(@"Date = %@", dateCheck);

И выходное значение: Date = 2012-12-11 18:30:00 +0000

Как я должен достичь вышеуказанного результата, я не знаю, в чем проблема.Пожалуйста помочь.Я был бы очень признателен за помощь.Спасибо заранее.

4 2

4 ответа:

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

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"MM/dd/yy"];
NSDate *dateCheck = [dateFormatter dateFromString:@"12/12/12"];
NSLog(@"Date = %@", dateCheck);

[dateFormatter setDateFormat:@"yyyy-MM-dd"];
NSString *dateString = [dateFormatter stringFromDate:dateCheck];
NSLog(@"dateString = %@", dateString);

Вывод:

dateString = 2012-12-12

@"MM/dd/yyyy" представляет собой 12/12/2012, а не 12/12/12. И если вы хотите конвертировать в 2012-12-12, вам нужно установить формат даты как @"yyyy-MM-dd", а затем преобразовать в строку снова, как показано выше.

Для получения более подробной информации о формате даты, проверьте это Шаблоны формата даты Unicode.

Здесь первое преобразование-это изменение строки на дату, а затем мы используем @"yyyy-MM-dd" для преобразования в строку снова в требуемом формате.

Вам нужны два форматера. Один для преобразования исходной строки в NSDate (как у вас сейчас), а второй для преобразования NSDate в новую строку с требуемым форматом.

Обратите внимание, что когда вы регистрируетесь как NSDate, он всегда будет отображаться в том формате, который вы видите.

Если вы хотите, чтобы дата была отформатирована определенным образом, вы можете продолжать использовать NSDateFormatter. Просто добавьте [dateFormatter setDateFormat:@"yyyy-MM-dd"];
NSString *string = [dateFormatter stringFromDate:dateCheck];
NSLog(@"Date = %@", string);
.

Кроме того, как отметил ACB, вам нужно преобразовать из @"12/12/2012", Если вы хотите использовать MM-dd-yyyy, в противном случае вам нужно использовать MM-dd-yy

`Date = 2012-12-11 18:30:00 +0000` 

Из

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"MM/dd/yy"];
NSDate *dateCheck = [dateFormatter dateFromString:@"12/12/12"];
NSLog(@"Date = %@", dateCheck);

[dateFormatter setDateFormat:@"yyyy-MM-dd"];
NSString *dateString = [dateFormatter stringFromDate:dateCheck];
NSLog(@"dateString = %@", dateString);

Вы получаете правильную дату. Поскольку метка времени и локаль различны, вы не сможете увидеть 2012-12-12...