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

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

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

    posts - 60,comments - 71,trackbacks - 0
    一、JAVA中日期的獲取、設置和格式化
    1)JAVA提供了3個日期類:Date、Calendar和DateFormat。
    Date()方法主要用于創建日期對象并獲取日期;
    Calendar()方法主要用于獲取和設置日期;
    DateFormat()方法主要用于創建日期格式化器,然后再由格式化器將日期轉換為各種日期格式串輸出。
    2)JAVA語言規定的基準日期為格林尼治標準時間1970.1.1.00:00:00,當前日期是由基準日期開始所經歷的毫秒數轉換出來的。
    3)DateFomat類在java.text包中,Date和Calendar類在java.util包中。
    4)實例如下:
    import java.util.*;
    import java.text.*;

    public class DisplayDate {
    public static void main(String[] args){
    Date today;
    Calendar now;
    DateFormat f1,f2;
    String s1,s2;

    System.out.println("\n顯示Date類的相關用法");

    today = new Date();
    System.out.println("new Date()= \t"+ today);

    System.out.println("\n用DateFormat類顯示各種日期格式");

    //顯示各種日期格式
    f1 = DateFormat.getDateInstance();
    s1 = f1.format(today);
    System.out.println("DateFormat.getDateInstance()= \t"+s1);

    f1 = DateFormat.getDateInstance(DateFormat.LONG,Locale.CHINA);
    s1 = f1.format(today);
    System.out.println("DateFormat.getDateInstance(DateFormat.LONG,Locale.CHINA)= \t"+ s1);

    f1 = DateFormat.getDateInstance(DateFormat.MEDIUM,Locale.CHINA);
    s1 = f1.format(today);
    System.out.println("DateFormat.getDateInstance(DateFormat.MEDIUM,Locale.CHINA)= \t"+ s1);

    f1 = DateFormat.getDateInstance(DateFormat.SHORT,Locale.CHINA);
    s1 = f1.format(today);
    System.out.println("DateFormat.getDateInstance(DateFormat.SHORT,Locale.CHINA)= \t" + s1);

    System.out.println("\n用DateFormat類顯示各種時間格式");

    //顯示各種時間格式
    f1 = DateFormat.getTimeInstance();
    s1 = f1.format(today);
    System.out.println("DateFormat.getTimeInstance()= \t"+s1);

    f1 = DateFormat.getTimeInstance(DateFormat.LONG,Locale.CHINA);
    s1 = f1.format(today);
    System.out.println("DateFormat.getTimeInstance(DateFormat.LONG,Locale.CHINA)= \t"+s1);

    f1 = DateFormat.getTimeInstance(DateFormat.MEDIUM,Locale.CHINA);
    s1 = f1.format(today);
    System.out.println("DateFormat.getTimeInstance(DateFormat.MEDIUM,Locale.CHINA)= \t"+s1);

    f1 = DateFormat.getTimeInstance(DateFormat.SHORT,Locale.CHINA);
    s1 = f1.format(today);
    System.out.println("DateFormat.getTimeInstance(DateFormat.SHORT,Locale.CHINA)= \t"+s1);

    System.out.println("\n顯示Calendar的相關時間用法");

    now = Calendar.getInstance();
    today = now.getTime();
    System.out.println("Calendar.getInstance().getTime()= \t"+ today.toString());

    }
    }

    程序運行結果顯示如下:

    顯示Date類的相關用法
    new Date()= Fri May 02 13:29:32 CST 2003

    用DateFormat類顯示各種日期格式
    DateFormat.getDateInstance()= 2003-5-2
    DateFormat.getDateInstance(DateFormat.LONG,Locale.CHINA)= 2003年5月2日
    DateFormat.getDateInstance(DateFormat.MEDIUM,Locale.CHINA)= 2003-5-2
    DateFormat.getDateInstance(DateFormat.SHORT,Locale.CHINA)= 03-5-2

    用DateFormat類顯示各種時間格式
    DateFormat.getTimeInstance()= 13:29:32
    DateFormat.getTimeInstance(DateFormat.LONG,Locale.CHINA)= 下午01時29分32秒
    DateFormat.getTimeInstance(DateFormat.MEDIUM,Locale.CHINA)= 13:29:32
    DateFormat.getTimeInstance(DateFormat.SHORT,Locale.CHINA)= 下午1:29

    顯示Calendar的相關時間用法
    Calendar.getInstance().getTime()= Fri May 02 13:29:33 CST 2003

    1.計算某一月份的最大天數
    Calendar time=Calendar.getInstance();
    time.clear();
    time.set(Calendar.YEAR,year);
    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");
    System.out.println(df.format(date));
    4.計算一年中的第幾星期
    (1)計算某一天是一年中的第幾星期
    Calendar cal=Calendar.getInstance();
    cal.set(Calendar.YEAR, 2006);
    cal.set(Calendar.MONTH, 8);
    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, 8);
    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, 8);
    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對象

    /** *//**計算兩個時間之間相隔天數
    * @param startday 開始時間
    * @param endday 結束時間
    * @return
    */
    public int getIntervalDays(Calendar startday,Calendar endday)...{
    //確保startday在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對象
    /** *//**計算兩個時間之間相隔天數
    * @param startday 開始時間
    * @param endday 結束時間
    * @return
    */
    public int getIntervalDays(Date startday,Date endday)...{
    //確保startday在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));
    }同理,可以用相同的方法計算出任意兩個時間相隔的小時數,分鐘數,秒鐘數等
    注:以上方法是完全按時間計算,有時并不能令人滿意,如:
    startday="2006-10-11 20:00:00"
    endday="2006-10-12 8:00:00"
    計算結果為0,但是我們也許相讓計算結果變為1,此時可以用如下方法實現:
    在傳參之前,先設定endday的時間,如:
    endday.set(Calendar.HOUR_OF_DAY, 23);
    endday.set(Calendar.MINUTE, 59);
    endday.set(Calendar.SECOND, 59);
    endday.set(Calendar.MILLISECOND, 59);
    這樣再傳進去startday,endday,則結果就如我們所愿了。不過,如果嫌以上方法麻煩,可以參考以下方法:
    (3)改進精確計算相隔天數的方法
    public int getDaysBetween (Calendar d1, Calendar d2) ...{
    if (d1.after(d2)) ...{ // swap dates so that d1 is start and d2 is end
    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;

    posted on 2008-07-08 11:12 henry1451 閱讀(1223) 評論(2)  編輯  收藏

    FeedBack:
    # re: java 基礎時間格式化
    2008-12-30 13:18 | 北京時間
    我也遇到同樣的問題  回復  更多評論
      
    # re: java 基礎時間格式化
    2009-01-07 15:13 | 磁鋼
    gyhtt  回復  更多評論
      

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


    網站導航:
     
    主站蜘蛛池模板: 久久精品亚洲一区二区| 国产成人精品久久亚洲高清不卡 | 在线观看亚洲精品国产| 免费人成再在线观看网站 | 国产乱辈通伦影片在线播放亚洲| 亚洲精品无码成人| 国产jizzjizz视频免费看| 婷婷亚洲综合一区二区| 亚洲&#228;v永久无码精品天堂久久| 久久亚洲AV成人无码国产电影| 在线观看免费宅男视频| 222www在线观看免费| 亚洲视频一区在线| 国产v精品成人免费视频400条| 国产成人亚洲综合一区| 日本牲交大片免费观看| jizz免费观看| 亚洲欧洲免费视频| 成年女人男人免费视频播放| 精品国产日韩亚洲一区在线| 亚洲人成色77777在线观看大| 成人A毛片免费观看网站| 亚洲一区影音先锋色资源| 在线观看免费人成视频| 深夜a级毛片免费无码| 久久久久久久久亚洲| 成人福利免费视频| 国产亚洲福利一区二区免费看| 国产精品亚洲视频| 四虎精品视频在线永久免费观看| 亚洲日韩AV一区二区三区中文| 四虎精品亚洲一区二区三区| 国产精品网站在线观看免费传媒 | 免费看美女让人桶尿口| 一区二区视频免费观看| 亚洲狠狠综合久久| 妞干网手机免费视频| 中国在线观看免费的www| 久久精品国产亚洲αv忘忧草| 亚洲乱亚洲乱少妇无码| 999国内精品永久免费观看|