<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    開花流水

    空山無人,水流花開。

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      79 Posts :: 42 Stories :: 160 Comments :: 0 Trackbacks

    package com.hanyastar.ws.service.ITalkBBService;

    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.GregorianCalendar;
    import java.util.TimeZone;
    import java.util.Vector;
        
    /**   
     * 與日期、時間相關的一些常用工具方法.   
     * <p>   
     * 日期(時間)的常用格式(formater)主要有: <br>   
     * yyyy-MM-dd HH:mm:ss <br>   
     *    
     * @author stephen   
     * @version 1.0.0   
     */    
    public final class DateTool {     
        
        /**   
         * 對日期(時間)中的日進行加減計算. <br>   
         * 例子: <br>   
         * 如果Date類型的d為 2005年8月20日,那么 <br>   
         * calculateByDate(d,-10)的值為2005年8月10日 <br>   
         * 而calculateByDate(d,+10)的值為2005年8月30日 <br>   
         *    
         * @param d   
         *            日期(時間).   
         * @param amount   
         *            加減計算的幅度.+n=加n天;-n=減n天.   
         * @return 計算后的日期(時間).   
         */    
        public static Date calculateByDate(Date d, int amount) {     
            return calculate(d, GregorianCalendar.DATE, amount);     
        }     
             
        public static Date calculateByMinute(Date d, int amount) {     
            return calculate(d, GregorianCalendar.MINUTE, amount);     
        }     
             
        public static Date calculateByYear(Date d, int amount) {     
            return calculate(d, GregorianCalendar.YEAR, amount);     
        }     
        
        /**   
         * 對日期(時間)中由field參數指定的日期成員進行加減計算. <br>   
         * 例子: <br>   
         * 如果Date類型的d為 2005年8月20日,那么 <br>   
         * calculate(d,GregorianCalendar.YEAR,-10)的值為1995年8月20日 <br>   
         * 而calculate(d,GregorianCalendar.YEAR,+10)的值為2015年8月20日 <br>   
         *    
         * @param d   
         *            日期(時間).   
         * @param field   
         *            日期成員. <br>   
         *            日期成員主要有: <br>   
         *            年:GregorianCalendar.YEAR <br>   
         *            月:GregorianCalendar.MONTH <br>   
         *            日:GregorianCalendar.DATE <br>   
         *            時:GregorianCalendar.HOUR <br>   
         *            分:GregorianCalendar.MINUTE <br>   
         *            秒:GregorianCalendar.SECOND <br>   
         *            毫秒:GregorianCalendar.MILLISECOND <br>   
         * @param amount   
         *            加減計算的幅度.+n=加n個由參數field指定的日期成員值;-n=減n個由參數field代表的日期成員值.   
         * @return 計算后的日期(時間).   
         */    
        private static Date calculate(Date d, int field, int amount) {     
            if (d == null)     
                return null;     
            GregorianCalendar g = new GregorianCalendar();     
            g.setGregorianChange(d);     
            g.add(field, amount);     
            return g.getTime();     
        }     
        
        /**   
         * 日期(時間)轉化為字符串.   
         *    
         * @param formater   
         *            日期或時間的格式.   
         * @param aDate   
         *            java.util.Date類的實例.   
         * @return 日期轉化后的字符串.   
         */    
        public static String date2String(String formater, Date aDate) {     
            if (formater == null || "".equals(formater))     
                return null;     
            if (aDate == null)     
                return null;     
            return (new SimpleDateFormat(formater)).format(aDate);     
        }     
        
        /**   
         * 當前日期(時間)轉化為字符串.   
         *    
         * @param formater   
         *            日期或時間的格式.   
         * @return 日期轉化后的字符串.   
         */    
        public static String date2String(String formater) {     
            return date2String(formater, new Date());     
        }     
             
        /**   
         * 獲取當前日期對應的星期數.   
         * <br>1=星期天,2=星期一,3=星期二,4=星期三,5=星期四,6=星期五,7=星期六   
         * @return 當前日期對應的星期數   
         */    
        public static int dayOfWeek() {     
            GregorianCalendar g = new GregorianCalendar();     
            int ret = g.get(java.util.Calendar.DAY_OF_WEEK);     
            g = null;     
            return ret;     
        }     
        
        
        /**   
         * 獲取所有的時區編號. <br>   
         * 排序規則:按照ASCII字符的正序進行排序. <br>   
         * 排序時候忽略字符大小寫.   
         *    
         * @return 所有的時區編號(時區編號已經按照字符[忽略大小寫]排序).   
         */    
        public static String[] fecthAllTimeZoneIds() {     
            Vector v = new Vector();     
            String[] ids = TimeZone.getAvailableIDs();     
            for (int i = 0; i < ids.length; i++) {     
                v.add(ids[i]);     
            }     
            java.util.Collections.sort(v, String.CASE_INSENSITIVE_ORDER);     
            v.copyInto(ids);     
            v = null;     
            return ids;     
        }     
          
        /**   
         * 將日期時間字符串根據轉換為指定時區的日期時間.   
         *    
         * @param srcFormater   
         *            待轉化的日期時間的格式.   
         * @param srcDateTime   
         *            待轉化的日期時間.   
         * @param dstFormater   
         *            目標的日期時間的格式.   
         * @param dstTimeZoneId   
         *            目標的時區編號.   
         *    
         * @return 轉化后的日期時間.   
         */    
        public static String string2Timezone(String srcFormater,     
                String srcDateTime, String dstFormater, String dstTimeZoneId) {     
            if (srcFormater == null || "".equals(srcFormater))     
                return null;     
            if (srcDateTime == null || "".equals(srcDateTime))     
                return null;     
            if (dstFormater == null || "".equals(dstFormater))     
                return null;     
            if (dstTimeZoneId == null || "".equals(dstTimeZoneId))     
                return null;     
            SimpleDateFormat sdf = new SimpleDateFormat(srcFormater);     
            try {     
                int diffTime = getDiffTimeZoneRawOffset(dstTimeZoneId);     
                Date d = sdf.parse(srcDateTime);     
                long nowTime = d.getTime();     
                long newNowTime = nowTime - diffTime;     
                d = new Date(newNowTime);     
                return date2String(dstFormater, d);     
            } catch (ParseException e) {     
                //Log.output(e.toString(), Log);     
                return null;     
            } finally {     
                sdf = null;     
            }     
        }     
        
        /**   
         * 獲取系統當前默認時區與UTC的時間差.(單位:毫秒)   
         *    
         * @return 系統當前默認時區與UTC的時間差.(單位:毫秒)   
         */    
        private static int getDefaultTimeZoneRawOffset() {     
            return TimeZone.getDefault().getRawOffset();     
        }     
        
        /**   
         * 獲取指定時區與UTC的時間差.(單位:毫秒)   
         *    
         * @param timeZoneId   
         *            時區Id   
         * @return 指定時區與UTC的時間差.(單位:毫秒)   
         */    
        private static int getTimeZoneRawOffset(String timeZoneId) {     
            return TimeZone.getTimeZone(timeZoneId).getRawOffset();     
        }     
        
        /**   
         * 獲取系統當前默認時區與指定時區的時間差.(單位:毫秒)   
         *    
         * @param timeZoneId   
         *            時區Id   
         * @return 系統當前默認時區與指定時區的時間差.(單位:毫秒)   
         */    
        private static int getDiffTimeZoneRawOffset(String timeZoneId) {     
            return TimeZone.getDefault().getRawOffset()     
                    - TimeZone.getTimeZone(timeZoneId).getRawOffset();     
        }     
        
        /**   
         * 將日期時間字符串根據轉換為指定時區的日期時間.   
         *    
         * @param srcDateTime   
         *            待轉化的日期時間.   
         * @param dstTimeZoneId   
         *            目標的時區編號.   
         *    
         * @return 轉化后的日期時間.   
         * @see #string2Timezone(String, String, String, String)   
         */    
        public static String string2TimezoneDefault(String srcDateTime,     
                String dstTimeZoneId) {
            return string2Timezone("yyyy-MM-dd HH:mm:ss", srcDateTime,     
                    "yyyy-MM-dd HH:mm:ss", dstTimeZoneId);     
        }     
        
          
        /**   
         * 測試的main方法.   
         *    
         * @param argc   
         */    
        public static void main(String[] argc){
            String nowDateTime =date2String("yyyy-MM-dd HH:mm:ss");  
              
            System.out.println(string2TimezoneDefault(nowDateTime,"UTC"));  
              
    //        String[] ids = fecthAllTimeZoneIds();     
    //        String nowDateTime =date2String("yyyy-MM-dd HH:mm:ss");     
    //        System.out.println("The time Asia/Shanhai is " + nowDateTime);//程序本地運行所在時區為[Asia/Shanhai]     
    //        //顯示世界每個時區當前的實際時間     
    //        for(int i=0;i <ids.length;i++){     
    //            System.out.println(" * " + ids[i] + "=" + string2TimezoneDefault(nowDateTime,ids[i]));      
    //        }     
    //        //顯示程序運行所在地的時區     
    //        System.out.println("TimeZone.getDefault().getID()=" +TimeZone.getDefault().getID());     
        }  
          
    }  

    posted on 2010-03-26 15:28 開花流水 閱讀(365) 評論(1)  編輯  收藏 所屬分類: java

    Feedback

    # re: 與日期、時間相關的一些常用工具方法. 2011-10-09 18:23 開花流水
    計算兩個日期時間差實例代碼:


    public static void main(String[] args) throws ParseException{

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date currentTime=new Date();
    //將截取到的時間字符串轉化為時間格式的字符串
    Date beginTime=sdf.parse("2010-07-27 12:53:30");
    //默認為毫秒,除以1000是為了轉換成秒
    long interval=(currentTime.getTime()-beginTime.getTime())/1000;//秒
    long day=interval/(24*3600);//天
    long hour=interval%(24*3600)/3600;//小時
    long minute=interval%3600/60;//分鐘
    long second=interval%60;//秒
    System.out.println("兩個時間相差:"+day+"天"+hour+"小時"+minute+"分"+second+"秒");

    }


    可以把數據庫的日期時間轉換成毫秒數,然后計算間隔時間差,如果只想計算出兩個時間相差幾天可以:間隔秒數/60*60*24。
    注意:數據庫中或提供的日期時間格式一定要與SimpleDateFormat("yyyy-MM-dd HH:mm:ss")中的日期格式一致,不然會出錯的。

      回復  更多評論
      

    主站蜘蛛池模板: 免费看美女让人桶尿口| 免费在线观看的网站| 亚洲Av无码国产情品久久| 久久水蜜桃亚洲AV无码精品| 毛片免费视频播放| 国产精品亚洲精品青青青| 亚洲成在人线aⅴ免费毛片| 大地资源二在线观看免费高清| 亚洲日本在线播放| 国产乱码免费卡1卡二卡3卡| 2020亚洲男人天堂精品| 国产又大又粗又硬又长免费| 免费夜色污私人影院网站| 久久久久国产亚洲AV麻豆| 国产麻豆一精品一AV一免费| 亚洲五月激情综合图片区| 99久久免费国产香蕉麻豆| 亚洲国产欧美国产综合一区| 四虎影在线永久免费观看| 香蕉视频在线免费看| 日本一道高清不卡免费| 免费中文字幕视频| 亚洲国产成人高清在线观看| 99在线视频免费观看视频| 看全免费的一级毛片| 亚洲精品无码乱码成人| 日韩毛片在线免费观看| 亚洲色精品vr一区二区三区 | 免费无码黄十八禁网站在线观看| 亚洲综合久久一本伊伊区| 国产精品久久久久影院免费| 久久精品无码专区免费| 亚洲精品中文字幕乱码影院| 女人与禽交视频免费看| 一级毛片免费播放视频| 亚洲视频免费在线看| 亚洲AV无码乱码在线观看牲色 | rh男男车车的车车免费网站| 亚洲理论精品午夜电影| 国产国产人免费视频成69大陆| 国产真人无码作爱免费视频|