2012-01-28 3 views
0

я столкнулся вопрос с надлежащим поиском даты с использованием датой formatter.I сохранила дату в следующем формате:NSDate преобразования форматировщика не давая правильную дату

[DateFormat setDateFormat: @ "YYYY-MM-DD HH: мм : сс "];

Теперь мне нужно отобразить сохраненную дату в контроллере вида. Для удобства читаемости и простоты я получил сохраненную дату из базы данных и был изменен на короткий формат, например, 17 января 18 февраля и т. Д. код реализации для этого:

remind.Date = [[NSString alloc]initWithUTF8String:(const char *)sqlite3_column_text(statment, 3)]; 
NSDateFormatter *dateFormat = [[[NSDateFormatter alloc]init]autorelease]; 
[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 
NSDate *date = [dateFormat dateFromString:remind.Date]; 
[dateFormat setDateFormat:@"MMMM dd"]; 
NSString *dateVal = [dateFormat stringFromDate:date]; 
remind.Date = dateVal; 

Теперь значение даты будет отображаться, как показано в следующей ФОТОГРАФИИ:

enter image description here

Все эти даты сохраняются в массив, называемом grpArray

Теперь я хочу, чтобы получить полную дату отформатированной даты, когда я выбираю строку и перейти к контроллеру, где эта дата сохраняется, для что в сделала выберите строку с индексом путем я реализован следующий код:

-(void)tableView:(UITableView *)atableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

     ReminderClass *rem = [self.grpArray objectAtIndex:indexPath.section]; 

     // Instantiate your detail/editor view controller, 
     // and pass in the ReminderClass object to be edited. 
     ERAddReminderViewController *rdvc = [[[ERAddReminderViewController alloc]initWithReminder:rem]autorelease]; 

     NSDateFormatter *dateFormat = [[[NSDateFormatter alloc]init]autorelease]; 
     [dateFormat setDateFormat:@"MMMM dd"]; 
     [dateFormat setLenient:YES]; 
     NSDate *date = [dateFormat dateFromString:rem.Date]; 
     [dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 
     NSString *dateVal = [dateFormat stringFromDate:date]; 
     rem.Date = dateVal; 

     [self.navigationController pushViewController:rdvc animated:YES]; 
     rdvc.navigationItem.rightBarButtonItem.title = @"Edit"; 
} 

Теперь по логике я должен получить полный specified.Its формата дата т.е. работает нормально, но есть проблемы с правильным годом и временем, которое было первоначально saved.Please увидеть следующий моментальный снимок для уточнения:

enter image description here

Теперь дата, как мы можем видеть это 1970-01-17 00:00:00

Но фактическая дата, которую я спас было 2012-01-17 19:40:40

Что пошло не так реализация

Может ли один пожалуйста, руководство меня правильно

Спасибо всем заранее :)

ответ

1

Я вижу, что вы пытаетесь преобразовать дату MMMM dd в yyyy-MM-dd HH:mm:ss. Какой из курсов невозможен, поскольку дата в первом формате не знает год и время.
Вот почему он показывает 1970 00:00:00, 01-17 являются правильными (конечно же) Вам всегда нужно «хранить» исходную дату yyyy-MM-dd HH:mm:ss и работать с этим вместо форматированного.

+0

Чрезвычайно благодарен за ответ, но я хочу показать формат в виде Месячного дня в ячейках таблицы, когда пользователь выбирает строку, он/она должен иметь возможность просматривать полную дату, чтобы изменения могли сделайте с существующей датой. Если я не получаю полную дату, она становится отображаемой как ничто, когда я вернусь к предыдущей, так что, пожалуйста, помогите мне в этих строках, спасибо :) –

+0

Пожалуйста, смотрите снимок, 1-й, где пользователь может просматривать даты, а после выбора он переходит к данным, в которых присутствует эта дата. Я поместил кнопку (элемент правой кнопки панели навигации) для внесения изменений, и когда модификация завершена, он нажимает кнопку «Сделано». Затем измененная дата переписывается существующим, вид на него показан на 2-м снимке экрана –

+0

Можете ли вы показать мне код, в который вы добавляете дату в массив 'grpArray'? – basvk

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