-1

2014 年 12 月 31 日の間違った日付が返されます。サンプルコード:

NSDateFormatter *dateF =[[NSDateFormatter alloc] init];
NSLocale *enUSPOSIXLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
[dateF setLocale:enUSPOSIXLocale];
[dateF setDateFormat:@"MM/DD/yyyy"];

NSDate *date = [dateF dateFromString:@"12/31/2014"];
NSLog(@"Date for locale %@: %@",
      [[dateF locale] localeIdentifier], [dateF stringFromDate:date]);
date = [dateF dateFromString:@"01/01/2013"];
NSLog(@"Date for locale %@: %@",
      [[dateF locale] localeIdentifier], [dateF stringFromDate:date]);

返される結果は次のとおりです。

Date for locale en_US_POSIX: 12/335/2014
Date for locale en_US_POSIX: 01/01/2013

これにはいくつかの疑問が生じます。1) 正しい日付を取得するにはどうすればよいですか? 2) 1 か月が 335 日になるのはなぜですか?

ありがとうございます、

4

1 に答える 1

0

"D" は年間通算日です。"d" 日が必要です。

あなたがしたい:

[dateF setDateFormat:@"MM/dd/yyyy"];

参照: ICU Formatting Dates and Times Web ページ。

もう 1 つのよくある間違いは、「y」年ではなく、年の週を表す「Y」を使用することです。

于 2013-11-14T21:41:38.977 に答える