0

変更日を返すために使用したい次のメソッドがあります。

- (NSDate *)getCreationDate:(NSFileManager *)fileManager atPath:(NSString *)path {
    NSError *error;
    NSDate *date;
    NSDictionary *fileAttributes = [fileManager attributesOfItemAtPath:path error:&error];

    // Get creation date.
    if (!error) {
        if (fileAttributes != nil) {
            NSDate *creationDate = [fileAttributes fileCreationDate];
            NSString *dateString = [creationDate description];
            NSLog(@"Unformatted Date Created: %@", dateString);

            // Format date.
            NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
            [dateFormatter setDateFormat:@"dd-MM-yyyy hh:mm:ss"];
            date = [[NSDate alloc] init];
            date = [dateFormatter dateFromString:dateString];
            NSLog(@"Formatted Date Created: %@", [date description]);
        } else {
            NSLog(@"File attributes not found.");
        }
    } else {
        NSLog(@"%@", [error localizedDescription]);
    }

    return date;
}

問題は、フォーマットされた日付がnullとして戻ってくることです。

出力:

書式なし作成日:2013-02-06 04:44:57 +0000

フォーマットされた作成日:(null)

4

2 に答える 2

3

フォーマットされたNSDateのようなものはありません。これは、形式のない単なる日付です。descriptionメソッドは、デバッグとロギング用であり、必要な形式を使用します。

NSDateFormatterは、指定された形式でNSDateのNSString表現を作成するために使用されます。あなたの方法はこれに置き換えることができ、まったく同じことをすることができます。

- (NSDate *)getCreationDate:(NSFileManager *)fileManager atPath:(NSString *)path {
    NSError *error;
    NSDictionary *fileAttributes = [fileManager attributesOfItemAtPath:path error:&error];

    // Get creation date.
    if (!error) {
        if (fileAttributes != nil) {
            return [fileAttributes fileCreationDate];
       } else {
            NSLog(@"File attributes not found.");
        }
    } else {
        NSLog(@"%@", [error localizedDescription]);
    }

    return nil;
}

日付を表示したい場合は、フォーマットしてください。NSDateFormatterを使用して、フォーマットされたNSStringに変換します。

さらに、行

    date = [[NSDate alloc] init];
    date = [dateFormatter dateFromString:dateString];

新しい日付を作成し、それを破棄します。最初の行は不要です。

于 2013-02-07T01:04:45.173 に答える
0

タイムゾーンを時間形式に組み込んでおらず、時間の形式が間違っています。そのはず

yyyy-MM-dd HH:mm:ss ZZZZ
于 2013-02-07T00:50:54.460 に答える