getTime()得到时间戳不一样

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_35959554/article/details/85596884

    在前一段时间,我们软件新加了一个充值功能,主要是靠时间戳来确定是否有余额或者是充值成功,奇怪的是我在公司里测试是好好的但是在户外就不行了,这就有点懵逼了。

   我先分享我找到问题原因的历程,因为服务器是固定的排除服务器的问题,首先分析两点:

  1. 户内跟户外在机子环境上有什么区别
  2. 充值跟时间戳有关,有什么可能影响到时间戳

环境区别如下:1在户内跟户外的机子不是同一个,2户内连了网而户外没有。我首先排除第一个可能,因为机子其实都是一样的厂商生产型号也一样,应该问题不大,所以我觉得可能是联网的问题。

影响到时间戳的因素:机子本身的时间可能是一方面,机子设置的时区也可能是一方面。

根据上面两点我大概找到了点思路,联网可能影响到时区,无网络的时候无法自动获取时区,从而可能时区不同得到时间戳有问题。理论是没有依据的,进入代码测试,发现getTime()果然在不同的时区下面得到的时间戳不一样,而且户外的时区不是设置的东8区(中国标准时间 GMT+08:00),问题找到。

    所以解决方法当然是统一时区了,我是代码强行设置固定时区了(反正没有国外用户)所以我们可以在程序Application里设置

	TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"));

程序所有关于时间的操作都是基于东8区的时区了,这样时区就统一了,时间戳也统一,问题得以解决。

猜你喜欢

转载自blog.csdn.net/weixin_35959554/article/details/85596884
今日推荐