Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone NSDateFormatter模拟器上的日期不正确,设备上的日期正确_Iphone_Objective C_Ios Simulator_Nsdateformatter - Fatal编程技术网

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

Iphone NSDateFormatter模拟器上的日期不正确,设备上的日期正确,iphone,objective-c,ios-simulator,nsdateformatter,Iphone,Objective C,Ios Simulator,Nsdateformatter,我正在做一个日历,想知道我这个月的第一天在做什么 [formatter setDateFormat:@"e"]; int startDay = [[formatter stringFromDate:newDate] intValue]; 在设备上,此功能正常工作,并且月1日的日期正确。但在模拟器上,这是第二天。虽然模拟器并不重要,但它让我疯狂地认为我做错了什么。我试图设置格式化程序的区域设置,但没有区别,我认为也不应该设置。有人能解释一下吗 另一方面,有没有比这更好的方法来构建日历 更新:似乎

我正在做一个日历,想知道我这个月的第一天在做什么

[formatter setDateFormat:@"e"];
int startDay = [[formatter stringFromDate:newDate] intValue];
在设备上,此功能正常工作,并且月1日的日期正确。但在模拟器上,这是第二天。虽然模拟器并不重要,但它让我疯狂地认为我做错了什么。我试图设置格式化程序的区域设置,但没有区别,我认为也不应该设置。有人能解释一下吗

另一方面,有没有比这更好的方法来构建日历


更新:似乎如果我不设置区域设置,它在设备上可以正常工作,但在模拟器上却不行。如果我真的将区域设置为en_我们两个都不工作。如果这有什么变化的话,我就在奥斯汀,但我敢肯定美国和奥斯汀都有相同的日历://

这听起来像是正确的行为,取决于你经过的日期。NSDate对应于世界时间的精确点。到那时,一个时区可能是星期一,另一个时区可能是星期二


您可能希望
[[NSCalendar currentCalendar]firstWeekDay]

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


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

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

可能是重复的…。不,这是一个格式问题,我的设备与模拟器相比存在时区差异问题,尽管我只是传递了一个没有时间的日期。嗯,我以为iPhone上没有NSCalendar,但现在我查看了它。我来看看[[NSCalendar currentCalendar]firstWeekDay]返回一周的第一天,即周一。你也可以将它设置为星期天。不管怎样,它每个月只返回1。仍在调查通过日期。我没有设置一个时间或时区,只是一个日期,所以不确定到底发生了什么。手机从电脑同步它的日期,而且我从来没有遇到过手机其他部分的问题,比如说日历。