0

我有一个像“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”

4

3 回答 3

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"]);

你不能stringToDate(@"2012 12 12 12:12")在objective-c中使用。这里等效的是[self stringToDate:@"2012 12 12 12:12"].

于 2012-11-27T07:49:53.040 回答
2

你可以使用这个:

NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease];

而不是这两行:

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
...
[formatter release];

如果您使用 ARC,那么内存管理对您没有任何麻烦。

编辑:但是请阅读一些内存管理规则和指南,这是每个在 cococa 工作的人必须的。

于 2012-11-27T07:56:22.267 回答
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;
}
于 2012-11-27T07:51:22.067 回答