日期选择器在3GS上的工作方式与3G,触控和iPad不同

时间:2010-07-09 01:20:03

标签: iphone objective-c nsdate nsdateformatter

我的应用程序今天点击了应用商店。我让用户提交了一个奇怪的错误。我有一个日期选择器,它传回我在SQLite中存储为字符串的日期。我在模拟器,3G,itouch和iPAD上测试了应用程序。在所有这些方面,它按预期工作。但是,在此用户的3GS上,它会在日期选择器中选择的日期添加一天。

除了使用带有NSDateFormatterMediumStyle样式的NSDateformatter转换为要存储在db中的字符串之外,我没有对日期进行任何操作。

为什么这会在3GS上有所不同?

3 个答案:

答案 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。默认情况下,他们使用用户的语言环境,如果他们将其设置为您的语言环境以外的其他语言环境,则可能会有所不同。