我有一个像这样的字符串“2012 12 12 12:12”,如何格式化为日期?
我试试这个但不能正常工作
-(NSDate *)stringToDate:(NSString *)date
{
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
NSTimeZone *timeZone = [NSTimeZone localTimeZone];
[formatter setTimeZone:timeZone];
[formatter setDateFormat : @"yyyy MM dd HH:mm"];
NSString *stringTime = date;
NSDate *dateTime = [formatter dateFromString:stringTime];
[formatter release];
return dateTime;
}
更新:当我更改格式化程序的位置时,它也无法工作:
NSLog(@"%@", stringToDate(@"2012 12 12 12:12"));
它输出“null”,但它适用于字符串格式,如“2012-12-12 12:12”
答案 0 :(得分:3)
改变这一点,
[formatter setDateFormat : @"yyyy MM dd HH:mm"];
[formatter release];
NSString *stringTime = date;
NSDate *dateTime = [formatter dateFromString:stringTime];
到
[formatter setDateFormat : @"yyyy MM dd HH:mm"];
NSString *stringTime = date;
NSDate *dateTime = [formatter dateFromString:stringTime];
[formatter release];
在完成从字符串到日期转换使用格式化程序之前,请不要发布格式化程序。在您的代码中,您将在转换之前释放它。
<强>更新强>
您需要将其用作
NSLog(@"%@", [self stringToDate:@"2012 12 12 12:12"]);
您无法在objective-c中使用stringToDate(@"2012 12 12 12:12")
。这里的等价是[self stringToDate:@"2012 12 12 12:12"]
。
答案 1 :(得分:2)
您可以使用:
NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease];
而不是这两行:
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
...
[formatter release];
如果您使用ARC,那么内存管理没有任何问题。
编辑:但请仔细阅读一些内存管理规则和指南,这对于在cococa工作的每个人来说都是必须的。
答案 2 :(得分:1)
您在使用前发布NSDateFormatter
使用此代码: -
-(NSDate *)stringToDate:(NSString *)date
{
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
NSTimeZone *timeZone = [NSTimeZone localTimeZone];
[formatter setTimeZone:timeZone];
[formatter setDateFormat : @"yyyy MM dd HH:mm"];
NSString *stringTime = date;
NSDate *dateTime = [formatter dateFromString:stringTime];
[formatter release];
return dateTime;
}