<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  回復  更多評論
      

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


    網站導航:
     
    主站蜘蛛池模板: 国产精品亚洲精品| 国产亚洲婷婷香蕉久久精品| 亚洲免费在线视频播放| 久久精品人成免费| 夜夜亚洲天天久久| 最近高清中文字幕免费| 亚洲国产精品免费在线观看| 香蕉97超级碰碰碰免费公| 亚洲91av视频| 色播精品免费小视频| 亚洲成人激情小说| 最新69国产成人精品免费视频动漫 | 免费鲁丝片一级观看| 亚洲乱码av中文一区二区| 国产精品高清全国免费观看| 久久人午夜亚洲精品无码区 | 久久久久免费看黄A片APP| 亚洲综合色婷婷在线观看| 国产成人精品高清免费| 日韩在线观看免费| 亚洲国产精品VA在线观看麻豆| 午夜老司机永久免费看片| 亚洲乱码一二三四区麻豆| 日韩视频免费一区二区三区| 老司机午夜在线视频免费观| 亚洲综合色区在线观看| 免费国产叼嘿视频大全网站 | 亚洲综合色视频在线观看| 免费看一区二区三区四区| 亚洲图片中文字幕| 亚洲成aⅴ人片久青草影院| 少妇性饥渴无码A区免费 | 国国内清清草原免费视频99| 日日摸日日碰夜夜爽亚洲| 亚洲色精品aⅴ一区区三区| 在线观看永久免费| 黄色毛片视频免费| 亚洲综合小说久久另类区| 日韩毛片免费在线观看| 国产啪精品视频网站免费尤物| 亚洲一本之道高清乱码|