Android 同步服务器时区

Android 项目 工作平台 需要显示细化的时间,但硬件PAD时间不同,做了同步服务器时间

timStamp,timeZone -- 登陆获取服务器获取时间戳 和 时区

public static long timeDifference;//与服务器时间的差异

public static void gettimeDifference(long org_server_tm, String server_timezone) {
        Date w_ret = Utility.DateTimeConvertToServer(new Date(), server_timezone);
        timeDifference = org_server_tm - w_ret.getTime();
    }

/***
     * 把当地的时间转为服务器当时的时间,一般递交数据前先把Date一类数据转换
     *
     * @param tm
     * @return
     */
    public static Date DateTimeConvertToServer(Date tm, String server_timezone) {
        if (tm == null)
            return null;
        String timezone = TimeZone.getDefault().getID();
        if ("GMT".equals(timezone)) {
            timezone = timezone + "+0";
        }
        tm = new Date(tm.getTime() - getDiffTimeZoneRawOffsetStd(timezone)); // 转成格林威治时间
        Date d = new Date(tm.getTime() + getDiffTimeZoneRawOffsetStd(server_timezone));
        return d;
    }

/***
     * 计算出指定时区跟格林威治时间差
     *
     * @param timeZoneId
     * @return
     */
    public static int getDiffTimeZoneRawOffsetStd(String timeZoneId) {
        // return TimeZone.getTimeZone(timeZoneId).getRawOffset();
        TimeZone tz = TimeZone.getTimeZone(timeZoneId);
        return tz.getOffset(GregorianCalendar.getInstance(tz).getTimeInMillis());
    }

此 timeDifference 为与服务器时间的差异

/**
     * 永远以server为准
     *
     * @return
     */

    public static long getnowTime() {
        if (MyApplication.timeDifference != 0) {
            if (TeacherBean.getInstance().timeZone.isEmpty()) {
                TeacherBean.getInstance().timeZone = "Asia/Shanghai";
            }
            Date w_ret = DateTimeConvertToServer(new Date(), TeacherBean.getInstance().timeZone);
            w_ret.setTime(w_ret.getTime() + MyApplication.timeDifference);
            return w_ret.getTime();
        } else {
            return System.currentTimeMillis();
        }

    }



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值