根据现在的时区,判断其他时区的时间,包含夏令时。

 /***
     *
     * @param s 所在时区
     * @return 所在时区的时间
     */
    private String calculateTime(String s, boolean isDaylight) {
        String s1 = "空";
        //我要获取当前的日期
        Date date = new Date();
        //设置要获取到什么样的时间
        SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
        //获取String类型的时间
        String createdate = sdf.format(date);
        String nowTime[] = createdate.split(":");
        int now[] = new int[2];
        now[0] = Integer.parseInt(nowTime[0]);
        now[1] = Integer.parseInt(nowTime[1]);
        //计算的区时=已知区时-(已知区时的时区-要计算区时的时区)
        if (s.contains(":")) {
            //如果是半个时区 判断前面的字符是加还是减  后面的跟着变
            String time[] = s.split(":");
            int shiqu[] = new int[2];
            shiqu[0] = Integer.parseInt(time[0]);
            shiqu[1] = Integer.parseInt(time[1]);

            if (shiqu[0] < 0) {
                ///这是时区是 - 的情况  例如-9:30
                int hour = now[0] - (8 - shiqu[0]);
                int minute = now[1] - (shiqu[1]);

                if (minute < 0) {
                    hour = hour - 1;
                    minute = 59 + minute;
                }
                if (hour < 0) {
                    hour = 23 + hour;
                }
                //判断是不是夏令时
                if (isDaylight) {
                    hour++;
                }

                if (minute < 10) {
                    s1 = hour + ":0" + now[1];
                } else {
                    s1 = hour + ":" + now[1];
                }

            } else {
                ///这是时区是 + 的情况  例如+9:30
                int hour = now[0] - (8 - shiqu[0]);
                int minute = now[1] + (shiqu[1]);

                if (minute > 59) {
                    hour = hour + 1;
                    minute = minute - 59;
                }

                if (minute < 0) {
                    hour = hour - 1;
                    minute = 59 + minute;
                }
                if (hour > 23) {
                    hour = hour - 23;
                }
                if (hour < 0) {
                    hour = 23 + hour;
                }
                //判断是不是夏令时
                if (isDaylight) {
                    hour++;
                }
                if (minute < 10) {
                    s1 = hour + ":0" + minute;
                } else {
                    s1 = hour + ":" + minute;
                }

            }


        } else {
            int time = Integer.parseInt(s);
            int timeHour = now[0] - (8 - time);
            if (timeHour < 0) {
                timeHour = 23 + timeHour;
            }

            //判断是不是夏令时
            if (isDaylight) {
                timeHour++;
            }
            if (now[1] < 10) {
                s1 = timeHour + ":0" + now[1];
            } else {
                s1 = timeHour + ":" + now[1];
            }
        }


        return s1;
    }

猜你喜欢

转载自blog.csdn.net/qq_35674951/article/details/81285050