私は次のコードを持っています:
NSDate * today = [NSDate date];
NSDateFormatter * formatter = [[NSDateFormatter alloc] init];
NSLocale * zh_CN = [[NSLocale alloc] initWithLocaleIdentifier:@ "zh_CN"];
[フォーマッターsetLocale:zh_CN];
[フォーマッターsetDateStyle:NSDateFormatterFullStyle];
[フォーマッターsetTimeStyle:NSDateFormatterNoStyle];
NSDateFormatter * newFormatter = [[NSDateFormatter alloc] init];
NSLocale * en_US = [[NSLocale alloc] initWithLocaleIdentifier:@ "en_US"];
[newFormatter setLocale:en_US];
[newFormatter setDateStyle:NSDateFormatterFullStyle];
[newFormatter setTimeStyle:NSDateFormatterNoStyle];
NSLog(@ "今日:%@"、今日);
NSString * todayString = [フォーマッターstringFromDate:today];
NSLog(@ "zh_CN todayString:%@"、todayString);
NSDate * backToDate = [formatter dateFromString:todayString];
NSLog(@ "zh_CN backToDate:%@"、backToDate);
NSString * newTodayString = [newFormatter stringFromDate:today];
NSLog(@ "en_US newTodayString:%@"、newTodayString);
NSDate * newBackToDate = [newFormatter dateFromString:newTodayString];
NSLog(@ "en_US newBackToDate:%@"、newBackToDate);
backToDate = newBackToDate =今日を期待していましたが、ログには次のように表示されます。
2013-02-15 00:18:12.594 TestNSDate [16637:11303]今日:2013-02-14 16:18:12 +0000 2013-02-15 00:18:12.595 TestNSDate [16637:11303] zh_CN todayString:2013年2月15日星期五 2013-02-15 00:18:12.596 TestNSDate [16637:11303] zh_CN backToDate:1999-12-30 16:00:00 +0000 2013-02-15 00:18:12.619 TestNSDate [16637:11303] en_US newTodayString:2013年2月15日金曜日 2013-02-15 00:18:12.620 TestNSDate [16637:11303] en_US newBackToDate:2013-02-14 16:00:00 +0000
ここで、backToDateが1999-12-30になったことがわかりますが、なぜこれが発生するのでしょうか。