iOS离线时特定TimeZone的“实时”时间

这是场景:

我正在编写一个医学相关的程序,可以在没有连接的情况下使用。 当某个动作动作时,程序会将时间写入CoreData记录。

这就是问题,如果他们的设备将时间设置为比实时更早的差异时间。 这将是一个很大的问题,因为它是医疗用途。

  • 那么,即使没有连接,我怎样才能获得“真实”的时间?
  • 或者,是否可以禁止用户使用限制或DeviceProfile等更改设备时间?

这只是因为Apple是他们声称在1984年战斗的老大哥。欢迎来到1984年! 否则我们可以访问实时时间和ISO日期格式的英文版本! : – /每个iPwn,现在其他设备都有GPS接收器和互联网function,从中可以得到亚秒级的精确时间,但Apple坚持强迫我们依靠AT&T自动设置我们的时钟。 直到最近AT&T才开始提供准确的时间,感谢上帝的小恩惠。

缺乏GPS和NTP时间设置,加上明确忽略ISO 8601日期格式以及其他美国格式和语言,每天都非常烦人。

所以,你的问题的答案是,是的,它是可行的,但不是在Apple的Jail中,因为你不能在没有越狱的情况下从GPS或NTP设置RTC。

PS:我的猜测是,AT&T坚持这个用于通话时间或与我们收取更多钱有关的愚蠢行为! 😉

您可以从[NSDate日期]获得实时。 例如,以下内容:

[[NSDate date] timeIntervalSince1970] 

给出自1970年1月1日UTC午夜以来的秒数。 这与时区无关,并且与用户设置的时间无关。 如果您知道时区,那么您可以使用NSDateFormatter将其转换为本地时间(如果您愿意),但请确保还记录时区以使表示具有唯一性。

编辑:对不起,这个答案实际上是不正确的。 尝试后,用户设置时间似乎也会更改NSDate值。

那么,即使没有连接,我怎样才能获得“真实”的时间?

如果通过“无连接”你的意思是“没有任何类型的网络连接”,答案是你不能。

我认为如果你找不到独立validation系统时间的方法(并告诉用户原因),你可以做的最好的事情是禁用function。

NSDate和所有关联的类从系统时间读取日期。 如果没有要引用的Internet连接,NSDate类对用户滥用是开放的。

我在fishinear对Farmville的回答的评论中使用了一个例子。 如果用户种植一些需要5个小时才能生长的作物,您可以将系统时间改为未来5个小时来收获。 我敢肯定,这是Zynga需要互联网连接才能玩游戏的原因之一。

如果没有一些具有时间知识的硬件,苹果无法在没有互联网连接的情况下实际告知时间 即使他们确实有一些惊人的解决方案,他们也必须考虑时区,甚至跨时区旅行才能使这项工作成功。

如果我是你,我需要按照指定的时间间隔(每天一次等)连接互联网,以便绘制参考。

让我们知道您为什么需要这个,我们可以在function上建议一些可行的替代方案。