当时区设置为新西兰时,我有一个奇怪的问题,即从地址簿中检索到的生日日期。 当我使用NSDateFormatter格式化日期时,它显示错误的日期(总是加一天)。
所以我有一个ABRecordRef并得到这样的生日日期:
NSDate *birthday = objc_unretainedObject(ABRecordCopyValue(record,
kABPersonBirthdayProperty));
现在获取我做出此日期的本地化字符串:
NSString *s = [NSDateFormatter localizedStringFromDate:birthday dateStyle:NSDateFormatterShortStyle timeStyle:NSDateFormatterNoStyle];
例如,联系人的生日是1975年10月5日(在地址簿的联系方式中显示如下),但上面的代码生成6/10/1975 总是迟到一天。它似乎只有在我将时区设置为新西兰时才会发生。我在设备上试了一下,将时区设置为新西兰,这种情况发生了,甚至在iPhone模拟器中我将我的mac的时区设置为新西兰时。
非常感谢任何关于此的反馈或帮助,我不确定我是否遇到了iOS错误或者我做错了什么(例如我可能在处理日期时使用特定的时区地址簿而不是用户时区?)。