Java 处理客户';s错误日期更改

Java 处理客户';s错误日期更改,java,android,date,datetime,Java,Android,Date,Datetime,在我的android应用程序中(android并不重要,任何客户端应用程序都类似),我定期运行服务。当一段时间过去(例如7天)并且用户没有制定目标时,我会发送一个通知。但若用户将手机的时间更改为未来的日期(这会产生误报),我会发送通知。但这是错误的 long differenceMinutes = Math.abs( (System.currentTimeMillis() / 1000L) - lastGoalTime) / 60; 好路径: -用户在2014年6月15日制定了目标

在我的android应用程序中(android并不重要,任何客户端应用程序都类似),我定期运行服务。当一段时间过去(例如7天)并且用户没有制定目标时,我会发送一个通知。但若用户将手机的时间更改为未来的日期(这会产生误报),我会发送通知。但这是错误的

long differenceMinutes = 
     Math.abs( (System.currentTimeMillis() / 1000L) - lastGoalTime) / 60;
好路径:
-用户在2014年6月15日制定了目标,我将此日期保存到设备中。
-我的服务检查新目标。
-2014年6月22日,如果没有新目标未完成,我将发送通知

错误路径:
-用户在2014年6月15日制定了目标,我将此日期保存到设备中。
-2014年6月16日,用户将其当地时间更改为2014年6月22日。
-我的服务检查新目标。
-虽然只过了1天,但没有完成新目标,应用程序将发送通知。
-我不想申请发送通知,直到7天完成

我如何度过这种情况?
我不喜欢连接时间服务器并获取当前时间。
这类问题有解决办法吗?

如果我不知道这个术语,我很抱歉。

一个可能的解决方法或者甚至解决方案可能是检测日期更改事件并更新服务器

扩展广播接收器,并将以下操作添加到意图过滤器中,当然可以通过xml完成

intentFilter.addAction("android.intent.action.DATE_CHANGED");

如果你不能信任这个系统,你必须依赖一个你可以信任的系统。你不能自己计算毫秒数并使其可靠,因为用户拥有的所有硬件在计算时都有错误,这就是为什么他们使用时间服务器进行更正。如果不依赖某些外部资源,这可能无法解决。何时触发?每一天?或者只有当用户更改系统日期时?哦,有趣的是,这里有一个-,不是说你应该知道,只是供参考。直到你发帖我才知道这件事!当用户通过设置更改日期时,将触发此操作