【发布时间】:2012-01-28 20:11:58
【问题描述】:
我在使用日期格式化程序正确检索日期时遇到问题。我已将日期保存为以下格式:
[dateFormat setDateFormat:@"YYYY-MM-dd HH:mm:ss"];
现在我需要在视图控制器中显示保存的日期。为了便于阅读和简单,我从数据库中检索了保存的日期并更改为短格式,例如 1 月 17 日、2 月 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;
现在日期值将可见,如以下快照所示:
所有这些日期都保存在一个名为 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";
}
现在根据逻辑,我应该得到完整的日期,即指定的格式。它工作正常,但最初保存的正确年份和时间出现问题。请参阅以下快照以进行澄清:
现在我们看到的日期是 1970-01-17 00:00:00
但我保存的实际日期是 2012-01-17 19:40:40
实施中出了什么问题
谁能给我指点一下
提前谢谢大家:)
【问题讨论】:
标签: iphone nsdate nsdateformatter