【发布时间】:2019-03-27 02:40:35
【问题描述】:
在 iOS 12 中,我注意到 [NSDateFormatter stringFromDate] 方法在模拟器 iPad 上返回的值不正确,但在物理 iPad 上返回正确的值。
示例代码:
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"c"];
NSDate *currentDate = [NSDate date];
// Returns correct value on both physical and simulator iPads (eg. Fri Oct 19 15:39:53 2018)
NSString *currentDateAsString = [dateFormat stringFromDate:currentDate];
// Physical iPad: 5 (correct)
// Simulator iPad: 6 (incorrect)
两台 iPad 具有相同的日期/时间设置(例如,相同的时区)。这个错误的原因是什么?
【问题讨论】:
-
用不正确的值更新了原始问题
-
嗯,
"c"显示的格式取决于机器认为一周的第一天是什么。这可能因机器而异。您还说它们具有相同的设置,但我们没有理由相信。它们可能有许多不同的微妙方式。"c"格式是一种非常生硬的工具;尝试一种包含更多信息的格式。 -
基本上我需要将星期几作为数字,
"c"似乎符合该要求。这个问题在之前的 iOS 升级中没有出现,但是现在从 iOS 11 到 12 出现了。 -
我不否认这一点!我建议您通过尝试一些信息更丰富的格式进一步探索,看看这里发生了什么。
标签: ios date nsdate nsdateformatter ios12