我正在创建一个 iOS 应用程序来跟踪出勤率。每个考勤条目都存储在一个对象中,该对象具有一个状态属性(例如,出席、缺席)和一个NSDate
被调用的属性,该属性date
表示该考勤记录被记录的日期。当我选择特定日期(使用 aUIDatePickerView
或类似名称)时,我希望该日期的所有出勤记录(对象)显示在表格视图中。
虽然这在原则上听起来很简单,但我遇到了一个与时区有关的问题。我知道NSDate
s 的存储独立于时区(即它们相对于 UTC/GMT +0000 存储)。这意味着,如果我在悉尼并在例如 2012 年 11 月 4 日星期日出勤,因为日期存储为独立于时区,如果我将 iPhone/iPad 带到不同的时区(例如旧金山),所有出勤记录会向后移动一天,在这种情况下是 2012 年 11 月 3 日星期六,因为那是在旧金山当地时间(实际上是悉尼当地时间的第二天)进行考勤的时间。
我不希望这种情况发生——我希望日期是绝对的。换句话说,如果出席时间是 2012 年 11 月 4 日星期日,那么无论我去世界上的哪个地方(以及哪个时区),都需要保持在那个日期。如您所见,这与日历应用程序形成鲜明对比,日历应用程序需要根据时区更改约会时间。
任何有关解决此问题的更好方法的建议将不胜感激。请记住,我正在使用 a 选择要显示的日期,UIDatePickerView
它以与时区无关的格式返回当前值NSDate
,因此我还需要一种方法来进行简单的比较(最好是在 an 中,NSPredicate
因为出勤对象存储在 Core Data 中)获取该特定日期的所有出勤对象。