android时间戳差8小时问题

android时间戳差8小时问题

最近在做的android项目里面有个修改系统的问题,当初转的时候,时间戳怎么转都差8个小时的问题,后面觉得不对劲,觉得应该是转的时候时间本身就是转错的。
系统设置的是GMT+8,也就是东八区,,时间是从服务器上面传下来的,关闭了系统从网上同步时间的按钮,然后直接将拿下来的时间转化成系统时间,差8小时,设置时间的时候多涨一个心眼,在设置时加一句 mCalendar.setTimeZone(TimeZone.getTimeZone("GMT+8"));结果显示出来的还好,在后台算时间戳的时候一直有问题,想一想肯定是设置时间的时候没有设置好。我们知道时间戳是不随着时区变化而变化的,那就是拿到的时间戳不能直接去设置时间,而是先要减去一个时间8*60*60*1000,这样子再在前台去看程序,全部都正确了。
具体demo代码如下(想要修改时间必须要拿到root权限并且在AndroidManifest.xml里面加上<uses-permission android:name="android.permission.SET_TIME" />这句话):



    SimpleDateFormat format=new SimpleDateFormat("yyyyMMdd.HHmmss");
    Long t=new Long(time);//time是从服务器拿到的时间戳
    t=t-8*60*60*1000;
    Date date=new Date(t);
    String datetime=format.format(date);
    try {  
        Process process = Runtime.getRuntime().exec("su");
        DataOutputStream os = new DataOutputStream(process.getOutputStream());  
        os.writeBytes("setprop persist.sys.timezone GMT\n");  
        os.writeBytes("/system/bin/date -s "+datetime+"\n");  //把时间设置进去,这个地方一定要是yyyyMMdd.HHmmss的形式
        os.writeBytes("clock -w\n");  
        os.writeBytes("exit\n");  
        os.flush(); 
    } catch (IOException e) {
        e.printStackTrace();
        return false;
    }  

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值