私は次のコードを持っています:
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になったことがわかりますが、なぜこれが発生するのでしょうか。