【发布时间】:2015-12-04 04:39:32
【问题描述】:
我怀疑我无法理解为什么会这样,我呼吁这个网站的众神:)
我有一个这样的约会:
"1982-01-01T00:00:00Z"
当我显示服务器发送的任何内容时(我知道,客户要求,不好的做法......),我正在强制设备使用以下方法拥有该 TimeZone,在没有错误检查的情况下进行简化,没有进行优化,以及所有类似的东西:
+ (NSString *) yearStringFromDate: (NSDate *) date
{
NSDateFormatter *formatter = [NSDateFormatter new];
[formatter setDateFormat:@"YYYY"];
[formatter setTimeZone:[self timezoneForSIHF]];
return [formatter stringFromDate:date];
}
这应该是 UTC,但如果我没有设置我得到的语言环境,有时只是错误的年份。所以通过添加这个,我得到了所有情况下正确的年份:
[formatter setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]];
有关更多信息,我正在使用不同语言(en、de、es)的真实设备和模拟器中进行测试。
- 这是为什么呢?
- 为什么即使时区正确,区域设置也会影响日期?
- 为什么有时可以处理某些日期而有时不能? 例如,1982 在没有设置语言环境的情况下返回,1981 如果我将其设置为 1982。1980 不会发生这种情况,在两种情况下都会返回 1980(或 1987,或...)
提前感谢您的所有回复:D 干杯!
【问题讨论】:
标签: ios nsdate nsdateformatter nstimezone nslocale