2010-03-17 114 views
3

林建设一个日历,并找出了一个月,我做NSDateFormatter模拟器上不正确的日期,在设备上正确的日期

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

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

在旁注中是否有更好的方法来构建日历?

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

+0

一个可能的重复..... http://stackoverflow.com/questions/1803169/nsdateformatter-gives-different-values-on-device-and-模拟器-what-is-work-arou – 2010-03-17 06:25:37

+0

不,这是一个格式问题,我的设备与模拟器相比有时间差异,即使我只是没有时间通过​​一个日期。 – Rudiger 2010-03-17 23:31:10

回答

0

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

寻找其他人的解决方案,以获得本月的第一天它是我的代码相同(奇怪,因为我没有复制),并没有人报告过问题,也许这些用户在美国等问题没有出现。更改计算机上的时区也不会执行任何操作。

0

这听起来像正确的行为,取决于你传递的日期。NSDate对应于世界时的精确点。那时,它可能是一个时区的星期一,另一个时区的星期二。您可能需要[[NSCalendar currentCalendar] firstWeekDay]

+0

嗯,我以为我读的NSCalendar不是在iPhone上可用,但现在我看着它。我会看看 – Rudiger 2010-03-17 08:30:27

+0

[[NSCalendar currentCalendar] firstWeekDay]返回一周中的第一天,即星期一。你也可以设置它,所以它也是一个星期天。无论哪种方式,它每个月只返回1。仍在研究通过NSDate。我没有设置时间或时区,只是一个日期,所以不能确定发生了什么。 – Rudiger 2010-03-17 23:26:04

0

如果模拟器和设备上有不同的日历,该怎么办?一个周一是第一个周日,另一个周日。可能这可能是问题的原因...

+1

电话同步它的日期从计算机,我从来没有在电话的其他部分说日历的问题。 – Rudiger 2010-08-25 20:52:48