【发布时间】:2012-11-04 03:47:59
【问题描述】:
我正在创建一个 iOS 应用程序来跟踪出勤率。每个考勤条目都存储在一个对象中,该对象具有一个状态属性(例如出席、缺席)和一个名为date 的NSDate 属性,它表示该考勤记录被记录的日期。当我选择特定日期(使用UIDatePickerView 或类似名称)时,我希望该日期的所有出勤记录(对象)都显示在表格视图中。
虽然原则上这听起来很简单,但我遇到了与时区有关的问题。我知道NSDates 的存储独立于时区(即它们相对于 UTC/GMT +0000 存储)。这意味着如果我在悉尼并在例如 2012 年 11 月 4 日星期日出勤,因为日期存储为独立于时区,如果我将 iPhone/iPad 带到不同的时区(例如旧金山),所有出勤记录会向后移动一天,在这种情况下是 2012 年 11 月 3 日星期六,因为那是旧金山当地时间(实际上是悉尼当地时间的第二天)参加考勤的时间。
我不希望这种情况发生 - 我希望日期是绝对的。换句话说,如果出席是在 2012 年 11 月 4 日星期日,那么无论我去世界上的哪个地方(以及哪个时区),它都需要留在那个日期。如您所见,这与日历应用程序形成鲜明对比,在日历应用程序中,约会时间根据时区而变化。
任何有关解决此问题的更好方法的建议将不胜感激。请记住,我正在使用UIDatePickerView 选择要显示的日期,它以与时区无关的格式返回当前的NSDate,因此我还需要一种方法来进行简单的比较(最好在NSPredicate 中,因为考勤对象存储在核心数据中)以获取当天的所有考勤对象。
【问题讨论】:
-
@scoota 你能成功实现这个吗?即使我面临同样的问题。
标签: objective-c ios nsdate nscalendar nstimezone