【发布时间】:2011-12-13 22:30:07
【问题描述】:
交易是我想要 1978 年 6 月 18 日的 NSDate 表示。 我试图像这样初始化 NSDate
dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
self.dateFormatter.timeStyle = NSDateFormatterNoStyle;
self.startDate = [dateFormatter dateFromString:@"19/06/78"];
NSLog(@"%@", self.startDate);
当 iPhone 在国际设置中设置为丹麦语时,这会产生正确的日期。 它不适用于设置为英语/美国设置的 iPhone。
请注意额外的一天 (19),因为丹麦是 GMT +1,我认为 NSDate 默认为 23:00:00。这表明我没有按预期工作。
我希望上述日期 (18/06/1978) 代表一个 NSDate 对象,而不考虑设备上的时区、区域设置和国际设置。
如何实现?
编辑:
所以 Ole Begemann 的回答似乎解决了我的问题。他的解决方案确实在美国国际设置和欧洲国际设置的设备上创建了正确的日期。 但是当 Apple 应该审查应用程序时,创建的日期是 1978 年 6 月 17 日。这是有道理的,因为我将时区设置为 GMT +0000。而库比蒂诺就像格林威治标准时间 -0007 左右。 所以这会提前一天。
所以纠正我的问题:我想要 18-06-1978,无论设备在什么区域、时区或设置明智。
我要做的是设置开始日期 1978 年 6 月 18 日及以后在我的应用程序中将日期呈现为格式为“780618”(yyMMdd) 的字符串,无论设备的时区或位置如何。它总是必须是“780618”,因为这是我的应用程序的关键开始日期。
所以我可能把问题处理错了。而不是试图在任何地方强制使用相同的日期,我可能应该接受时区的东西并尝试配置 NSDateFormatter 以输出正确的日期。
所以基本上:我想要的是 NSDate 实例,它在任何地方都格式化为“780618”——在任何时区,任何国际设备设置。
如何做到这一点?
【问题讨论】:
标签: iphone ipad nsdate nsdateformatter