这是情景:
我正在编写一个医疗相关程序,可以在没有连接的情况下使用。当某个动作动作时,程序会将时间写入CoreData记录。
这就是问题,如果他们的设备将时间设置为比实时更早的差异时间。这将是一个很大的问题,因为它用于医疗用途。
答案 0 :(得分:2)
这只是因为Apple是他们声称在1984年打架的老大哥。欢迎来到1984年!否则我们可以访问实时时间和ISO日期格式的英文版本! : - / 每个iPwn,现在还有其他设备,都有GPS接收器和互联网功能,从中可以得到亚秒级的精确时间,但Apple坚持强迫我们依靠AT& T来自动设置我们的时钟。直到最近AT& T开始提供准确的时间,感谢上帝的小恩惠。
缺乏GPS和NTP时间设置,加上ISO 8601日期格式与其他美国格式和语言的明显遗漏,每天都非常烦人。
所以,你的问题的答案是,是的,这是可行的,但不是在Apple的监狱中,因为你无法在没有越狱的情况下从GPS或NTP设置RTC。
PS:我的猜测是,AT& T坚持这个用于通话时间或与我们收取更多钱有关的愚蠢行为! ; - )答案 1 :(得分:1)
您可以从[NSDate日期]获得实时。例如,以下内容:
[[NSDate date] timeIntervalSince1970]
给出自1970年1月1日UTC午夜以来的秒数。这与时区无关,并且与用户设置的时间无关。如果您知道时区,那么您可以使用NSDateFormatter将其转换为本地时间,但请确保还记录时区以使表示具有唯一性。
编辑:对不起,这个答案其实不正确。尝试后,用户设置时间似乎也会更改NSDate值。
答案 2 :(得分:0)
那么,即使没有连接,我怎样才能获得“真实”时间?
如果“无连接”是指“没有任何类型的网络连接”,答案就是你不能。
我认为如果您无法找到独立验证系统时间的方法(并告诉用户原因),您可以做的最好的事情是禁用该功能。
答案 3 :(得分:0)
NSDate和所有关联的类从系统时间读取日期。如果没有要引用的互联网连接,NSDate类可以向用户滥用。
我在一个关于fishinear对Farmville的回答的评论中使用了一个例子。如果用户种植一些需要5个小时才能生长的作物,您可以将系统时间改为未来5个小时来收获。我敢肯定,这是Zynga需要互联网连接才能玩游戏的原因之一。
如果没有一些具有时间知识的硬件,Apple无法在没有互联网连接的情况下实际告知时间;即使他们确实有一些惊人的解决方案,他们也必须考虑时区,甚至跨时区旅行才能使这项工作成功。
如果我是你,我需要按指定的时间间隔(每天一次等)连接互联网,以便绘制参考。
让我们知道为什么你需要这个,我们可以在功能上提出一些可行的替代方案。