我的应用程序今天点击了应用商店。我让用户提交了一个奇怪的错误。我有一个日期选择器,它传回我在SQLite中存储为字符串的日期。我在模拟器,3G,itouch和iPAD上测试了应用程序。在所有这些方面,它按预期工作。但是,在此用户的3GS上,它会在日期选择器中选择的日期添加一天。
除了使用带有NSDateFormatterMediumStyle样式的NSDateformatter转换为要存储在db中的字符串之外,我没有对日期进行任何操作。
为什么这会在3GS上有所不同?
答案 0 :(得分:1)
您是否考虑过该错误与iOS4升级相关的可能性而非设备特定问题?
我有同样的问题,但只有在更新到iOS4之后。我的格式化程序是这样的:
[aDateFormatter setDateFormat:@“yyyy-MM-dd HH:mm:ss Z“];
和我的日期是这样的:
2009-10-27 7:30:12 -0700
我设法通过将日期选择器模式设置为之前将最大/最小/选定日期应用于日期选择器来解决问题。就我而言:
aDatePicker.datePickerMode = UIDatePickerModeDate;
答案 1 :(得分:0)
这听起来像是时区问题,而不是3GS的问题。
我不确定 NSDateformatter 是否属实(我会尝试一下),但如果你获得 NSDate 的描述属性,你会得到当地时间(GMT偏移)。
如果您持久保存这些本地时间字符串,然后在假定GMT时解除它们(或者如果设备上的时区发生了变化),那么时间就会出错。检查用户所在的时区,并尝试相应地设置系统时区(模拟器将使用MacOS时区)。
答案 2 :(得分:0)
检查您是否在任何日期格式化程序和日期扫描程序上设置NSLocale。默认情况下,他们使用用户的语言环境,如果他们将其设置为您的语言环境以外的其他语言环境,则可能会有所不同。