我的应用程序严重依赖于当前的时间戳。目前,当用户提交请求时,我使用<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app ng-init="vm.init()" ng-controller="TestController as vm">
<input type="hidden" name="id" ng-model="id">
<input type="text" placeholder="just test input" name="other" ng-model="id">
</div>
以UTC格式获取当前时间戳。虽然这样可以正常工作,但当用户开始在他们的设备上操作System.currentTimeMillis()
并导致时间戳不准确时,它就成了一个问题。
为什么在客户端呢?为什么不在服务器上处理它?好吧,我的应用程序需要离线工作。当连接到互联网时,我的所有请求都被推送到Date/Time
。在这些情况下,我必须有用户执行操作的原始时间,所以如果我在jobQueue
提交请求,但由于网络问题,服务器只会在4:02pm
附近收到,服务器必须知道我在7:30pm
发送了请求。
我现在考虑了哪些选项?
4:02pm
监听BroadcastReceiver
操作的任何意图,然后存储偏移量,以便每当用户提交请求时,我将使用偏移量计算同步时间,以确保时间戳准确。Date/Time
服务器与我的设备同步时间。我不完全确定哪个是最优的(假设我列出了所有可能的解决方案)。如果我还没想到其他解决方案,请告诉我。
P.S。如果我碰巧使用NTP
来监听设备上的任何日期时间操作,我怎么能计算其中的偏移?
答案 0 :(得分:2)
自从我提出这个问题已经有一段时间了,并且没有任何优雅的答案,所以经过一些研究和一些反复试验,我决定采取NTP路线,经过一些挖掘后,我发现一个漂亮的图书馆,为您完成整个事情。
可以在这里找到:
对这些让生活变得更轻松的人的信任。
您必须与ntp服务器同步一次,然后从那里开始,他们将为我们计算Delta,无论SystemClock
时间如何,都会给我们准确的UTC。
答案 1 :(得分:0)
对于时间同步,您可以实现从服务器获取时区。一旦我们有了timzone,我们就可以得到服务器的当前时间。