iPhone,如果我将日期字符串从一种格式转换为另一种格式,存储它,我必须将它转换为日期,怎么样?

iPhone,如果我将日期字符串从一种格式转换为另一种格式,存储它,我必须将它转换为日期,怎么样?

问题描述:

我需要在屏幕上以某种格式显示日期,但我需要将日期另存为另一种格式的字符串。我认为这意味着我必须将其转换为日期并返回字符串。iPhone,如果我将日期字符串从一种格式转换为另一种格式,存储它,我必须将它转换为日期,怎么样?

我该怎么做?

我已经想出了如何将我的字符串转换为日期,但构建分析器给我一个警告。

我想字符串从年月日转换为YYYY-MM-DD

他到目前为止我的代码...

NSString *startDateString = btnStartDate.titleLabel.text; 
NSDateFormatter *dateStartFormatter = [[[NSDateFormatter alloc] init] autorelease]; 
[dateStartFormatter setDateFormat:@"dd MM yyyy"]; 
NSDate *datStartDate = [[NSDate alloc] init]; 
datStartDate = [dateStartFormatter dateFromString:startDateString]; 

alt text

分析仪警告您泄漏。首先,将一个新对象分配给datStartDate,然后用datStartDate = [dateStartFormatter dateFromString:startDateString];存储一个新值,而不先释放先前的对象。

所以不是:

NSDate *datStartDate = [[NSDate alloc] init]; 
datStartDate = [dateStartFormatter dateFromString:startDateString]; 

你应该这样写:

NSDate *datStartDate = [dateStartFormatter dateFromString:startDateString]; 
+0

我不确定这将如何工作,因为你还没有指定yyyy-MM-dd? – Jules 2010-10-01 06:59:22

+0

仔细看,它是关于'datStartDate'变量的,这是你例子中的第4行。这会导致内存泄漏,因为您用第5行中的新对象覆盖第4行的指针。格式设置在第3行,因此一切正常。试试吧:用我建议的线替换第4行和第5行,警告就会消失。 – DarkDust 2010-10-01 13:30:28

那么你分配空间对于datStartDate为新的NSDate,然后将其替换为日期范围内全新的NSDate(现在您已为第一个NSDate预留了内存,这是永远不会使用的)

使用此:

NSDate* datStartDate = [dateStartFormater dateFromString:startDateString]; 

然后使用dateStartFormater或其他NSDateFormatter把你的约会对象成所需要的字符串,像这样:

[dateStartFormatter setDateFormat:@"yyyy MM dd"]; 
NSString* formatedDate = [dateStartFormater stringFromDate:datStartDate]; 
+0

我必须做一些错误的,我得到空http://img.skitch.com/20101001-gapu4pw1x8w3n1g1qugikfbegc.jpg – Jules 2010-10-01 06:58:13

+0

你在你的日期之前有' - '吗?不要以为这会有所作为。 – PostMan 2010-10-01 07:01:56

+0

如果你调试,datStartDate里面是什么? – PostMan 2010-10-01 07:06:17