至少在iOS 11.2中,它看起来像Environment.TickCount改变了它的行为。在装有iOS 10.3的iPad上,它从设备启动起返回毫秒数。但是在装有iOS 11.2的iPhone上,它返回560066914,并且在几分钟后-560066431更少了,并且设备没有重新启动!
自设备启动以来,还有另一种获取时间的方法吗?我需要它来检查用户自上次启动应用以来是否更改了时间设置。
答案 0 :(得分:1)
简单地解决:
#if __IOS__
long run = (long)(NSProcessInfo.ProcessInfo.SystemUptime * 1000);
#else
long run = System.Environment.TickCount;
#endif
更新:
NSProcessInfo.ProcessInfo.SystemUptime也返回错误的值。看起来苹果在iOS 11中打破了TickCount,现在您不能再依赖它了。 “那些野兽* rds!” (r)
答案 1 :(得分:0)
您可以在Microsoft Docs中找到所需的所有信息:
TickCount属性每49.8天在Int32.MinValue(一个负数)和Int32.MaxValue之间循环一次。
由于TickCount属性值的值是一个32位有符号整数,如果系统连续运行,则TickCount将从0递增到Int32.MaxValue大约24.9天,然后跳转到Int32.MinValue,这是负数数字,然后在接下来的24.9天内增加为零。您可以通过调用Windows GetTickCount函数(大约49.7天后重置为零)或调用GetTickCount64函数来解决此问题。
如果测量DateTime.Now
和Environment.TickCount & Int32.MaxValue
(这是一个正数,每24.9天重置一次),则可以确定用户是否更改了时间。