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

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

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

    用動作去驅動未來

    生命在于運動,讓自己身體的每一個細胞都動起來吧.

     

    java 日期的轉換

    1.計算某一月份的最大天數

    Calendar   time=Calendar.getInstance();
    time.clear();
    time.set(Calendar.YEAR,year);   //year   為   int  
    time.set(Calendar.MONTH,i-1);//注意,Calendar對象默認一月為0                      
    int   day=time.getActualMaximum(Calendar.DAY_OF_MONTH);//本月份的天數
    注:在使用set方法之前,必須先clear一下,否則很多信息會繼承自系統當前時間

    2.Calendar和Date的轉化

    (1)   Calendar轉化為Date
    Calendar   cal=Calendar.getInstance();
    Date   date=cal.getTime();

    (2)   Date轉化為Calendar
    Date   date=new   Date();
    Calendar   cal=Calendar.getInstance();
    cal.setTime(date);

    3.格式化輸出日期時間   (這個用的比較多)

    Date   date=new   Date();
    SimpleDateFormat   df=new   SimpleDateFormat("yyyy-MM-dd   hh:mm:ss");
    String   time=df.format(date);
    System.out.println(time);

    4.計算一年中的第幾星期

    (1)計算某一天是一年中的第幾星期
    Calendar   cal=Calendar.getInstance();
    cal.set(Calendar.YEAR,   2006);
    cal.set(Calendar.MONTH,   1);
    cal.set(Calendar.DAY_OF_MONTH,   3);
    int   weekno=cal.get(Calendar.WEEK_OF_YEAR);

    (2)計算一年中的第幾星期是幾號
    SimpleDateFormat   df=new   SimpleDateFormat("yyyy-MM-dd");
    Calendar   cal=Calendar.getInstance();
    cal.set(Calendar.YEAR,   2006);
    cal.set(Calendar.WEEK_OF_YEAR,   1);
    cal.set(Calendar.DAY_OF_WEEK,   Calendar.MONDAY);
    System.out.println(df.format(cal.getTime()));
    輸出:
    2006-01-02

    5.add()和roll()的用法(不太常用)

    (1)add()方法
    SimpleDateFormat   df=new   SimpleDateFormat("yyyy-MM-dd");
    Calendar   cal=Calendar.getInstance();
    cal.set(Calendar.YEAR,   2006);
    cal.set(Calendar.MONTH,   1);
    cal.set(Calendar.DAY_OF_MONTH,   3);
    cal.add(Calendar.DATE,   -4);
    Date   date=cal.getTime();
    System.out.println(df.format(date));
    cal.add(Calendar.DATE,   4);
    date=cal.getTime();
    System.out.println(df.format(date));
    輸出:
            2006-08-30
            2006-09-03
    (2)roll方法
    cal.set(Calendar.YEAR,   2006);
    cal.set(Calendar.MONTH,   1);
    cal.set(Calendar.DAY_OF_MONTH,   3);
    cal.roll(Calendar.DATE,   -4);
    date=cal.getTime();
    System.out.println(df.format(date));
    cal.roll(Calendar.DATE,   4);
    date=cal.getTime();
    System.out.println(df.format(date));
    輸出:
            2006-09-29
            2006-09-03
    可見,roll()方法在本月內循環,一般使用add()方法;

    6.計算兩個任意時間中間的間隔天數(這個比較常用)
    (1)傳進Calendar對象
            public   int   getIntervalDays(Calendar   startday,Calendar   endday)...{              
                    if(startday.after(endday))...{
                            Calendar   cal=startday;
                            startday=endday;
                            endday=cal;
                    }        
                    long   sl=startday.getTimeInMillis();
                    long   el=endday.getTimeInMillis();
                 
                    long   ei=el-sl;                      
                    return   (int)(ei/(1000*60*60*24));
            }
    (2)傳進Date對象

            public   int   getIntervalDays(Date   startday,Date   endday)...{                
                    if(startday.after(endday))...{
                            Date   cal=startday;
                            startday=endday;
                            endday=cal;
                    }                
                    long   sl=startday.getTime();
                    long   el=endday.getTime();              
                    long   ei=el-sl;                      
                    return   (int)(ei/(1000*60*60*24));
            }
    (3)改進精確計算相隔天數的方法
            public   int   getDaysBetween   (Calendar   d1,   Calendar   d2)   ...{
                    if   (d1.after(d2))   ...{  
                            java.util.Calendar   swap   =   d1;
                            d1   =   d2;
                            d2   =   swap;
                    }
                    int   days   =   d2.get(Calendar.DAY_OF_YEAR)   -   d1.get(Calendar.DAY_OF_YEAR);
                    int   y2   =   d2.get(Calendar.YEAR);
                    if   (d1.get(Calendar.YEAR)   !=   y2)   ...{
                            d1   =   (Calendar)   d1.clone();
                            do   ...{
                                    days   +=   d1.getActualMaximum(Calendar.DAY_OF_YEAR);//得到當年的實際天數
                                    d1.add(Calendar.YEAR,   1);
                            }   while   (d1.get(Calendar.YEAR)   !=   y2);
                    }
                    return   days;
            }
    注意:通過上面的方法可以衍生出求任何時間,如要查出郵箱三周之內收到的郵件(得到當前系統時間-再得到三周前時間)用收件的時間去匹配   最好裝化成   long去比較
    如:1年前日期(注意毫秒的轉換)
          java.util.Date   myDate=new   java.util.Date();
          long   myTime=(myDate.getTime()/1000)-60*60*24*365;
          myDate.setTime(myTime*1000);
          String   mDate=formatter.format(myDate);

    7.   String   和   Date   ,Long   之間相互轉換   (最常用)

    字符串轉化成時間類型(字符串可以是任意類型,只要和SimpleDateFormat中的格式一致即可)
    通常我們取時間跨度的時候,會substring出具體時間--long-比較

    java.text.SimpleDateFormat   sdf   =   new   java.text.SimpleDateFormat("M/dd/yyyy   hh:mm:ss   a",java.util.Locale.US);
    java.util.Date   d   =   sdf.parse("5/13/2003   10:31:37   AM");
    long   dvalue=d.getTime();
    SimpleDateFormat   formatter   =   new   SimpleDateFormat("yyyy-MM-dd   HH:mm:ss");
    String   mDateTime1=formatter.format(d);

    8.   通過時間求時間

    年月周求日期
    SimpleDateFormat   formatter2   =   new   SimpleDateFormat("yyyy-MM   F   E");
    java.util.Date   date2=   formatter2.parse("2003-05   5   星期五");
    SimpleDateFormat   formatter3   =   new   SimpleDateFormat("yyyy-MM-dd");
    String   mydate2=formatter3.format(date2);

    求是星期幾
    mydate=   myFormatter.parse("2001-1-1");
    SimpleDateFormat   formatter4   =   new   SimpleDateFormat("E");
    String   mydate3=formatter4.format(mydate);

    9.   java   和   具體的數據庫結合

    在開發web應用中,針對不同的數據庫日期類型,我們需要在我們的程序中對日期類型做各種不同的轉換。若對應數據庫數據是oracle的Date類型,即 只需要年月日的,可以選擇使用java.sql.Date類型,若對應的是MSsqlserver   數據庫的DateTime類型,即需要年月日時分秒的,選擇java.sql.Timestamp類型
    你可以使用dateFormat定義時間日期的格式,轉一個字符串即可

    class   Datetest{
    *method   將字符串類型的日期轉換為一個timestamp(時間戳記java.sql.Timestamp)
    *@param   dateString   需要轉換為timestamp的字符串
    *@return   dataTime   timestamp

    public   final   static   java.sql.Timestamp   string2Time(String   dateString)
    throws   java.text.ParseException   {
    DateFormat   dateFormat;
    dateFormat   =   new   SimpleDateFormat("yyyy-MM-dd   kk:mm:ss.SSS",   Locale.ENGLISH);//設定格式
    //dateFormat   =   new   SimpleDateFormat("yyyy-MM-dd   kk:mm:ss",   Locale.ENGLISH);
    dateFormat.setLenient(false);
    java.util.Date   timeDate   =   dateFormat.parse(dateString);//util類型
    java.sql.Timestamp   dateTime   =   new   java.sql.Timestamp(timeDate.getTime());//Timestamp類型,timeDate.getTime()返 回一個long型
    return   dateTime;
    }

    *method   將字符串類型的日期轉換為一個Date(java.sql.Date)
    *@param   dateString   需要轉換為Date的字符串
    *@return   dataTime   Date

    public   final   static   java.sql.Date   string2Date(String   dateString)
    throws   java.lang.Exception   {
    DateFormat   dateFormat;
    dateFormat   =   new   SimpleDateFormat("yyyy-MM-dd",   Locale.ENGLISH);
    dateFormat.setLenient(false);
    java.util.Date   timeDate   =   dateFormat.parse(dateString);//util類型
    java.sql.Date   dateTime   =   new   java.sql.Date(timeDate.getTime());//sql類型
    return   dateTime;
    }

    public   static   void   main(String[]   args){
    Date   da   =   new   Date();
    注意:這個地方da.getTime()得到的是一個long型的值
    System.out.println(da.getTime());

    由日期date轉換為timestamp

    第一種方法:使用new   Timestamp(long)
    Timestamp   t   =   new   Timestamp(new   Date().getTime());
    System.out.println(t);

    第二種方法:使用Timestamp(int   year,int   month,int   date,int   hour,int   minute,int   second,int   nano)
    Timestamp   tt   =   new   Timestamp(Calendar.getInstance().get(
                Calendar.YEAR)   -   1900,   Calendar.getInstance().get(
                Calendar.MONTH),   Calendar.getInstance().get(
                Calendar.DATE),   Calendar.getInstance().get(
                Calendar.HOUR),   Calendar.getInstance().get(
                Calendar.MINUTE),   Calendar.getInstance().get(
                Calendar.SECOND),   0);
    System.out.println(tt);

    try   {
    String   sToDate   =   "2005-8-18";//用于轉換成java.sql.Date的字符串
                String   sToTimestamp   =   "2005-8-18   14:21:12.123";//用于轉換成java.sql.Timestamp的字符串
                Date   date1   =   string2Date(sToDate);
                Timestamp   date2   =   string2Time(sToTimestamp);
    System.out.println("Date:"+date1.toString());//結果顯示
    System.out.println("Timestamp:"+date2.toString());//結果顯示
    }catch(Exception   e)   {
    e.printStackTrace();
    }
    }
    }  

    posted on 2010-05-11 14:31 黑螞蟻 閱讀(561) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    導航

    統計

    公告

    路在腳下,此刻,出發。

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    相冊

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 人人爽人人爽人人片A免费| 久久精品国产免费观看| 永久免费A∨片在线观看| 免费在线黄色网址| 亚洲AV无码久久精品蜜桃| 本道天堂成在人线av无码免费| 国产18禁黄网站免费观看| 亚洲Aⅴ在线无码播放毛片一线天| 成人免费一区二区三区在线观看| 亚洲另类自拍丝袜第1页| 美女羞羞视频免费网站| 亚洲av无码国产精品色在线看不卡| 美女被免费网站视频在线| 国产精品四虎在线观看免费 | 女人张腿给男人桶视频免费版| 亚洲av无码国产综合专区| 欧美三级在线电影免费| 亚洲av无码偷拍在线观看| 免费国产成人午夜私人影视| 一级毛片免费毛片毛片| 亚洲成色WWW久久网站| 99久久久国产精品免费蜜臀| 国产精品亚洲综合一区| 亚洲一区二区无码偷拍| 日韩电影免费在线观看| 亚洲视频国产精品| 免费精品一区二区三区在线观看| 亚洲福利在线观看| caoporm超免费公开视频| 国产亚洲精品精华液| jzzjzz免费观看大片免费| 亚洲AV无一区二区三区久久| 18禁止观看免费私人影院| 无遮挡呻吟娇喘视频免费播放| 亚洲免费观看视频| h在线观看视频免费网站| 亚洲爆乳无码精品AAA片蜜桃| 日本XXX黄区免费看| 国产成人亚洲毛片| 国产猛烈高潮尖叫视频免费| 中文字幕不卡免费高清视频|