NSDateFormatter模拟器上的日期不正确,设备上的日期正确

时间:2010-03-17 04:03:20

标签: iphone objective-c ios-simulator nsdateformatter

我正在建立一个日历并找出我这个月的第一天

[formatter setDateFormat:@"e"];
int startDay = [[formatter stringFromDate:newDate] intValue];

在设备上,这可以正常工作,并且当月的第1天是在正确的一天。但在模拟器上它是第二天。虽然它对模拟器并不过分重要,但它让我疯狂地认为我做错了什么。我试图设置格式化程序的区域设置,但没有区别,我认为不应该。任何人都可以对此有所了解吗?

另一方面,是否有更好的方法来构建日历?

更新:似乎我没有设置区域设置它在设备上工作正常,但在模拟器上却没有。如果我将区域设置设置为en_US它们都不起作用。我在澳大利亚,如果这改变了什么,但我很确定美国和澳大利亚都有相同的日历:/

3 个答案:

答案 0 :(得分:0)

这听起来像是正确的行为,具体取决于您传入的日期.NSDate对应于世界时的精确点。此时,可能是一个时区的星期一,另一个时区的星期二。

您可能想要[[NSCalendar currentCalendar] firstWeekDay]

答案 1 :(得分:0)

似乎没有解决方案。更改设备上的时区不会导致问题,并且所有日志输出都会报告正确的时区,但NSDate似乎从模拟器上的两个不同位置拉出时区,可能是Cupertino的一个区域和本地的一个。

查看其他人的解决方案,以获得本月的第一天,它与我的代码相同(奇怪,因为我没有复制),没有人报告问题,也许这些用户在美国,所以问题没有浮出水面。更改计算机上的时区也没有任何作用。

答案 2 :(得分:0)

如果您在模拟器和设备上有不同的日历怎么办?一个星期一作为第一个星期日,另一个星期天。可能这可能是问题的原因......