我正在建立一个日历并找出我这个月的第一天
[formatter setDateFormat:@"e"];
int startDay = [[formatter stringFromDate:newDate] intValue];
在设备上,这可以正常工作,并且当月的第1天是在正确的一天。但在模拟器上它是第二天。虽然它对模拟器并不过分重要,但它让我疯狂地认为我做错了什么。我试图设置格式化程序的区域设置,但没有区别,我认为不应该。任何人都可以对此有所了解吗?
另一方面,是否有更好的方法来构建日历?
更新:似乎我没有设置区域设置它在设备上工作正常,但在模拟器上却没有。如果我将区域设置设置为en_US它们都不起作用。我在澳大利亚,如果这改变了什么,但我很确定美国和澳大利亚都有相同的日历:/
答案 0 :(得分:0)
这听起来像是正确的行为,具体取决于您传入的日期.NSDate对应于世界时的精确点。此时,可能是一个时区的星期一,另一个时区的星期二。
您可能想要[[NSCalendar currentCalendar] firstWeekDay]
。
答案 1 :(得分:0)
似乎没有解决方案。更改设备上的时区不会导致问题,并且所有日志输出都会报告正确的时区,但NSDate似乎从模拟器上的两个不同位置拉出时区,可能是Cupertino的一个区域和本地的一个。
查看其他人的解决方案,以获得本月的第一天,它与我的代码相同(奇怪,因为我没有复制),没有人报告问题,也许这些用户在美国,所以问题没有浮出水面。更改计算机上的时区也没有任何作用。
答案 2 :(得分:0)
如果您在模拟器和设备上有不同的日历怎么办?一个星期一作为第一个星期日,另一个星期天。可能这可能是问题的原因......