1. ホーム
  2. ios

[解決済み] NSDateFormatterの'YYYY'と'yyyy'の違い

2023-06-17 09:29:01

質問

YYYY'と'yyy'の正確な違いは何ですか?私は、次のように読みました。 このリンク を読むと、次のように書かれています。

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

を使おうとすると

NSString *stringDate = @"Feb 28, 2013 05:30pm";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MMM dd, yyyy hh:mma"];
NSDate *date=[dateFormatter dateFromString:stringDate];
NSLog(@"Date 1 : %@",date); //2013-02-28 12:00:00 +0000

NSString *stringDatee = @"Feb 28, 2013 05:30pm";
NSDateFormatter *dateFormatterr = [[NSDateFormatter alloc] init];
[dateFormatterr setDateFormat:@"MMM dd, YYYY hh:mma"];
NSDate *datee=[dateFormatterr dateFromString:stringDatee];
NSLog(@"Date 2 : %@",datee); //2013-01-05 12:00:00 +0000

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"MMM dd, YYYY hh:mma"];
NSString *dateString = [dateFormat stringFromDate:datee];
NSLog(@"date 3 : %@", dateString); //Jan 05, 2013 05:30PM

このように、結果を date となり datee が異なることは理解できましたが、なぜ日付2と日付3の結果が異なるのでしょうか?私は文字列から日付を作成し、再び文字列に同じを逆にしているように、しかし、出力はミスマッチ?

同じ理由を知っている人はいますか?それは年の週を指定しますが、それでも私は同じ結果を得るはずです。

ありがとうございます。

EDIT :-です。

もし私が

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"MMM dd, YYYY hh:mma"];
NSString *dateString = [dateFormatterr stringFromDate:[NSDate date]];
NSLog(@"date: %@", dateString); //Feb 28, 2013 04:37PM

という文字列を渡すと、ちゃんとした結果が得られますが、同じものをdateに渡すと 2013-01-05 12:00:00 +0000 NSLogのdate 2を確認すると、おかしな結果になっています。

どのように解決するのですか?

また、日付の書式文字列を使用する場合、正しい書式を使用することが重要です。

YYYY"は週単位の西暦です。

yyyy"は通常の暦年です。

ブログ全体を見ることができますので、一度ご覧になってみてはいかがでしょうか。

https://web.archive.org/web/20150423093107/http://realmacsoftware.com/blog/working-with-date-and-time

http://realmacsoftware.com/blog/working-with-date-and-time (デッドリンク)