<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 閱讀(1229) 評論(2)  編輯  收藏

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

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


    網站導航:
     
    主站蜘蛛池模板: 一级毛片免费观看不卡视频| 亚洲AV无码一区二区一二区| 中文字幕在线视频免费观看| 国产国产人免费人成免费视频| 亚洲偷偷自拍高清| 亚欧免费无码aⅴ在线观看| 亚洲精品无码MV在线观看| 一级成人a做片免费| 国产亚洲日韩一区二区三区| 男人j进女人p免费视频| 亚洲日韩中文在线精品第一| 一区二区三区精品高清视频免费在线播放 | 久久免费看黄a级毛片| 亚洲欧洲国产经精品香蕉网| 91短视频免费在线观看| 亚洲国产韩国一区二区| 一个人看的www在线观看免费| 亚洲综合成人婷婷五月网址| 免费看美女让人桶尿口| 国产亚洲精品精品精品| 国产精品亚洲综合专区片高清久久久| 皇色在线免费视频| 久久精品九九亚洲精品| 色窝窝免费一区二区三区| 国产精品亚洲精品观看不卡| 免费理论片51人人看电影| 七次郎成人免费线路视频| 亚洲av成人无码久久精品| 久久久久久精品免费看SSS| 亚洲一区二区三区国产精华液| 全黄性性激高免费视频| 色www永久免费网站| 亚洲欧洲高清有无| 国产一区二区三区免费视频| 国产日韩久久免费影院 | 3344在线看片免费| 亚洲综合免费视频| 免费看一级做a爰片久久| 永久在线观看免费视频| 亚洲精品美女网站| 国产亚洲成AV人片在线观黄桃|