0

この「2012121212:12」のような文字列が1つありますが、日付としてフォーマットするにはどうすればよいですか?

私はこれを試しますが、うまくいきません

-(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-1212: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];

これらの2行の代わりに:

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

ARCを使用している場合は、メモリ管理に問題はありません。

編集:しかし、メモリ管理のルールとガイドラインを読んでください。これは、ココカで働くすべての人にとって必須です。

于 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 に答える