您的位置:首页 > 移动开发 > Android开发

Android 同步服务器时区

2016-05-09 18:04 666 查看
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();

        }

    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息