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

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

          2.明確你要轉向時間所在的時區(qū)

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

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

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

          例如:你要從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)";

           /**
            * 轉換時間時區(qū)
            * @param convertString  需要轉的時間字符串
            * @param format  格式話字符串 例如d-MMM-yyyy HH:mm (z)
            * @param sourceTimeZone 源時間時區(qū)
            * @param targetTimeZone 目標時間時區(qū)
            * @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();
            
            
            //獲取源時區(qū)時間相對的GMT時間
            Long sourceRelativelyGMT=time-TimeZone.getTimeZone(sourceTimeZone).getRawOffset();
            
            //GMT時間+目標時間時區(qū)的偏移量獲取目標時間
            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
          主站蜘蛛池模板: 旌德县| 手机| 塘沽区| 尉犁县| 孝感市| 凤翔县| 通州市| 饶河县| 乌什县| 金乡县| 遵化市| 丰原市| 芜湖市| 滨海县| 辽源市| 鄂伦春自治旗| 深水埗区| 龙山县| 乐清市| 青河县| 和平县| 灌云县| 五家渠市| 开封县| 杨浦区| 乌审旗| 山西省| 兴文县| 沾化县| 武安市| 宜黄县| 玛沁县| 南雄市| 梓潼县| 栾城县| 孙吴县| 盱眙县| 长岭县| 温州市| 蒙阴县| 盐津县|