【问题标题】:iOS: Is it possible to check the current gmt time without relying on an online service or iOS date settings?iOS:是否可以在不依赖在线服务或 iOS 日期设置的情况下检查当前格林威治标准时间?
【发布时间】:2015-01-17 08:21:34
【问题描述】:

我在下面有这个方法来检查时间,它当前抓取 iOS 用户在 iOS 设置中的日期和时间。但是,如果他们设置了虚假日期,我的应用程序可能无法按预期工作。我想知道目前是否可以获得真正的 GMT 时间,而不依赖于 iOS 设置或在线服务。

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setAMSymbol:@"AM"];
    [formatter setPMSymbol:@"PM"];
    [formatter setDateFormat:@"MM/dd/yyyy hh:mm:a"];       

     NSString *dateString = [formatter stringFromDate:[NSDate date]];

     NSLog(@"THE DATE STRING%@",dateString);

【问题讨论】:

  • 你认为时间会从哪里来?
  • 是的,我想多了。我希望 iOS 有一些超级秘密的内部时钟。
  • 我唯一的建议是,如果您的应用程序可以通过每次启动(或任何时候)保存时间并可疑地查看向后变化来知道时间是否倒退。
  • 我认为没有办法做到这一点。见stackoverflow.com/q/1444456/629118
  • 从其他 SO 我注意到建议将 GPS 作为时间源:请参阅 stackoverflow.com/questions/14559583/… 。你在网上考虑吗?这当然很神奇。

标签: ios objective-c time


【解决方案1】:

如果设备离线且日期错误,则无法知道。

不过,如果您设法得到它,您可以将其格式化为 GMT,将 [formatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]] 添加到您当前的代码中。

【讨论】:

  • 请原谅 > “我想知道目前是否有可能获得真正的 GMT 时间,而不依赖于 iOS 设置或在线服务。”
  • 对。问题是询问当时的一些未知来​​源 - 除了设备设置或互联网。这个问题与格式没有任何关系。
  • 他们不仅想要未知的时间来源,还希望它是格林威治标准时间。关于格林威治标准时间,你按照我说的那样去做,关于未知来源,我说这是不可能的。不要误会我的意思,但我看不出我的回答不能完全满足这个问题。
  • 我的原始评论是在您添加除了在日期格式化程序上设置时区之外的信息之前发表的。
  • 或者你也可以使用[NSTimeZone timeZoneForSecondsFromGMT:0]
【解决方案2】:

有一些互联网时间服务器可以让您调用 API 来获取当前时间。如果您有互联网连接,则可以使用其中之一。但我不知道具体情况,只是它们存在。

编辑:我错过了您所说的“......而不是依赖......在线服务”的部分问题。

鉴于这些限制,答案是否定的。如果用户更改设备上的本地时间,您必须连接到远程时间信息源。这里没有魔法。

【讨论】:

  • "不依赖在线服务器" -1
  • 我错过了那部分。所以答案是“不”。
猜你喜欢
  • 2019-11-25
  • 2011-05-13
  • 2011-02-20
  • 2013-03-10
  • 2011-10-30
  • 2018-12-01
  • 2010-12-02
  • 1970-01-01
  • 2012-03-19
相关资源
最近更新 更多