3

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

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

在设备上,这可以正常工作,并且该月的 1 日在正确的日期。但在模拟器上是后天。尽管模拟器并不重要,但它有点让我发疯,以为我做错了什么。我试图设置格式化程序的语言环境,但没有区别,我也不认为应该这样做。任何人都可以对此有所了解吗?

顺便说一句,有没有比这更好的方法来构建日历?

更新:似乎如果我不设置语言环境,它在设备上可以正常工作,但在模拟器上却不行。如果我确实将语言环境设置为 en_US,它们都不起作用。如果这有任何改变,我在澳大利亚,但我很确定美国和澳大利亚都有相同的日历:/

4

3 回答 3

0

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

于 2010-08-25T14:22:41.250 回答
0

这似乎没有解决办法。更改设备上的时区不会导致问题,并且所有日志输出都会报告正确的时区,但 NSDate 似乎从模拟器上的两个不同位置提取时区,可能一个用于 Cupertino,一个用于本地。

查看其他人的解决方案来获得当月的第一天,它与我的代码相同(奇怪,因为我没有复制)并且没有人报告问题,也许这些用户在美国,所以问题没有t 表面。更改计算机上的时区也无济于事。

于 2010-03-18T06:07:03.253 回答
0

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

你可能想要[[NSCalendar currentCalendar] firstWeekDay].

于 2010-03-17T06:49:46.657 回答