孤燈野火
          暢想的天空
          posts - 2,comments - 4,trackbacks - 0

          Java時區的轉換
          邏輯如下:
              
          1.明確你要轉的當前時間所在的時區

          2.明確你要轉向時間所在的時區

          3.獲取當前時間所在時區相對GMT的偏移量

          4.當前時間-相對GMT的偏移量來獲得當前時間的GMT的值

          5.GMT的值+轉向時區相對GMT的偏移量獲取轉向時區的時間值

          例如:你要從GMT+8時間轉向GMT+7時間
          sourceTimeZone 為GMT+8

          targetTimeZone為GMT+7

          /**
           *
           */
          package test;

          import java.text.ParseException;
          import java.text.SimpleDateFormat;
          import java.util.Date;
          import java.util.TimeZone;


          public class DateTimeUtil {
           
           static String DEFAULT_TIMEZONE = "GMT+8";
           static String DEFAULT_FORMAT = "d-MMM-yyyy HH:mm (z)";

           /**
            * 轉換時間時區
            * @param convertString  需要轉的時間字符串
            * @param format  格式話字符串 例如d-MMM-yyyy HH:mm (z)
            * @param sourceTimeZone 源時間時區
            * @param targetTimeZone 目標時間時區
            * @return
            * @throws ParseException
            */
           public static Date ConverDateGMT(String convertString,String format,String sourceTimeZone,String targetTimeZone) throws ParseException
           {
            
            Date date=null;
            

            if(isEmpty(sourceTimeZone)){
             sourceTimeZone = DEFAULT_TIMEZONE;
            }
            
            if(isEmpty(targetTimeZone)){
             targetTimeZone = DEFAULT_TIMEZONE;
            }
            
            if(isEmpty(format)){
             format = DEFAULT_FORMAT;
            }
            
            
            
            SimpleDateFormat sdf = new SimpleDateFormat(format);
            
            //獲取傳入的時間值
            Long time = new Date(sdf.parse(convertString).getTime()).getTime();
            
            
            //獲取源時區時間相對的GMT時間
            Long sourceRelativelyGMT=time-TimeZone.getTimeZone(sourceTimeZone).getRawOffset();
            
            //GMT時間+目標時間時區的偏移量獲取目標時間
            Long targetTime=sourceRelativelyGMT+TimeZone.getTimeZone(targetTimeZone).getRawOffset();
            
            
            date= new Date(targetTime);
            
            return date;
            
           }
           
           
           /**
            * Check empty string
            * <pre>
            *   null: true
            *   "": true
            *   " ":true
            * </>
            *
            * @param value
            * @return
            */
           public static boolean isEmpty(String value) {
            boolean emptyFlg = false;
            if (null == value || value.trim().length() <= 0) {
             emptyFlg = true;
            }
            return emptyFlg;
           }
          }
           
           



          posted on 2012-09-17 14:15 孤飛燕 閱讀(7001) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 东港市| 绵竹市| 荣成市| 枣阳市| 乳源| 成都市| 龙泉市| 改则县| 涿州市| 得荣县| 桐柏县| 布尔津县| 昌图县| 济南市| 凌云县| 玉树县| 如东县| 正镶白旗| 正蓝旗| 南通市| 灌南县| 葵青区| 承德县| 名山县| 通海县| 锦屏县| 田林县| 龙游县| 克拉玛依市| 青浦区| 庆云县| 正镶白旗| 榆林市| 石嘴山市| 临沭县| 左贡县| 高阳县| 栾川县| 临漳县| 鄂州市| 灵宝市|