0

日付から文字列を返すNSDateのカテゴリとしてメソッドを作成しました。形式は{4年の数字}{2か月の数字}{2日の数字}です。何らかの理由で、フォーマッタは日付の年を返すのではなく、現在の年を4年の数字として返します。これが私のコードです:

- (NSString *) YYYYMMDD{
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];

    [formatter setTimeStyle:NSDateFormatterNoStyle];
    [formatter setDateStyle:NSDateFormatterFullStyle];
    [formatter setDateFormat:@"YYYYMMdd"];   // This line is doing something odd, not sure why yet.

    NSString *dateAsString = [formatter stringFromDate:self];

    NSLog(@"Date: %@ String: %@", [self description], dateAsString);

   return dateAsString;

}

ログに記録された行を見ると、日付オブジェクトで表されるはずの年が現在の年でなくても、年は柔軟性がなく、現在の年に固執していることがわかります。

これがなぜなのか、何か考えはありますか?間違ったフォーマッターを使用していますか?

4

2 に答える 2

1

Y は小文字にする必要があります: y

これは私にとってはうまくいきます:

+ (NSDateFormatter *) dateFormatter {
    static NSDateFormatter * formatter = nil ;
    if (formatter == nil) {
        formatter = [[NSDateFormatter alloc] init] ;
       [formatter setDateFormat:@"yyyyMMdd"] ;
    }
    return formatter ;
}

HTH

于 2013-02-13T14:56:41.457 に答える
1

Data Formatting Guideのコメントで述べたように:

よくある間違いは、YYYY を使用することです。yyyy は暦年を指定し、YYYY は ISO 年週カレンダーで使用される (「年の週」の) 年を指定します。ほとんどの場合、yyyy と YYYY は同じ数値になりますが、異なる場合もあります。通常、暦年を使用する必要があります。

だから試してください:

[formatter setDateFormat:@"yyyyMMdd"];
于 2013-02-13T14:59:08.247 に答える