官术网_书友最值得收藏!

5.3 日期時間處理

在程序的開發過程中,經常需要處理日期時間類型的數據,如用戶在表單中輸入的為字符串類型的日期,而數據庫中保存的是日期時間類型的數據,所以在保存數據庫之前需要將字符串轉換為日期時間類型。有時頁面中顯示的數據為簡寫的日期字符串,所以需要將一個日期時間類型的對象轉換為簡寫的字符串。本節將介紹幾個常用的對日期時間操作的JavaBean實例。

實例144 將指定日期字符串轉換為Calendar對象

光盤位置:光盤\MR\05\144

初級

實用指數:

實例說明

在實際開發過程中,有時需要將用戶輸入的日期字符串轉換為Calendar類型。本實例介紹的是如何將一個日期字符串轉換為Calendar對象類型,其運行效果如圖5.20所示。

圖5.20 將日期字符串轉換為Calendar對象

關鍵技術

本實例主要應用格式化日期時間的java.text.SimpleDateFormat類。已知日期字符串的格式為“yyyy-mm-dd”,如“2010-06-07”,實現步驟如下:

(1)創建一個“yyyy-mm-dd”格式的格式化對象,具體代碼如下:

        SimpleDateFormat format = new SimpleDateFormat("yyyy-mm-dd");

(2)通過SimpleDateFormat對象的parse()方法將指定字符串轉換為Date對象,具體代碼如下:

        Date date = format.parse("2010-06-07");

(3)通過Calendar對象的setTime()方法將Date對象轉換為Calendar對象,具體代碼如下:

        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);

設計過程

(1)新建名為StringUtil的JavaBean類,用于將日期字符串轉換為Calendar對象,關鍵代碼如下:

        public class StringUtil {
        private String dateStr;                                      //日期字符串
        private Calendar calendar=null;                              //將字符串轉換后的Calendar對象
        public Calendar getCalendar() {
              Date date=null;                                        //聲明一個Date類型的對象
              SimpleDateFormat format=null;                          //聲明格式化日期的對象
              if(dateStr! =null){
                  format=new SimpleDateFormat("yyyy-MM-dd");         //創建日期的格式化類型
                  calendar=Calendar.getInstance();                   //創建一個Calendar類型的對象
                  try{                                               //forma.parse()方法會拋出異常
                      date=format.parse(dateStr);                    //解析日期字符串,生成Date對象
                      calendar.setTime(date);                        //使用Date對象設置此Calendar對象的時間
                  } catch (ParseException e) {
                      e.printStackTrace();
                  }
              }
              return calendar;
        }
        ……        //省略了其他屬性的get和set方法
        }

(2)新建index.jsp頁,用于輸入表單信息,關鍵代碼如下:

        <form action="tocalendar.jsp"method="post">
            <table>
              <tr>
                  <td align="right">請輸入日期字符串:</td>
                  <td><input type="text"name="datestr"/>
                      <font>格式為:2008-08-80</font>
                  </td>
              </tr>
              <tr>
                  <td colspan="2"align="center"><input type="submit"value="轉換"/></td>
              </tr>
            </table>
        </form>

(3)新建tocalendar.jsp頁,用于將日期字符串轉換為Calendar對象,并輸入Calendar對象中的年、月、日,關鍵代碼如下:

        <%
              String dateStr = request.getParameter("datestr");
        %>
        <! -- 使用useBean動作標簽導入JavaBean對象 -->
        <jsp:useBean id="strBean"class="com.lh.bean.StringUtil"></jsp:useBean>
        <! -- 對StringUtil類的dateStr屬性賦值 -->
        <jsp:setProperty property="dateStr"name="strBean"value="<%=dateStr %>"/>
        <table border="1">
              <tr>
                  <td align="right">輸入的日期為:</td>
                  <td>
                      <! -- 從StringUtil對象中獲得dateStr的屬性值 -->
                      <jsp:getProperty property="dateStr"name="strBean"/>
                  </td>
              </tr>
              <tr>
                  <td align="right"width="100">輸出轉換后的Calendar對象中的日期值:</td>
                  <td >
                      <%
                            Calendar calendar = strBean.getCalendar();
                        %>
                        年:<%=calendar.get(calendar.YEAR)%><br>
                        月:<%=calendar.get(calendar.MONTH)+1%><br>
                        日:<%=calendar.get(calendar.DAY_OF_MONTH)%>
                  </td>
              </tr>
        </table>

秘笈心法

在實際的應用開發過程中,經常需要將日期字符串轉換為Calendar對象類型。因此讀者有必要掌握如何將一個日期字符串轉換為Calendar對象。

實例145 將Calendar對象轉換為日期時間字符串

光盤位置:光盤\MR\05\145

初級

實用指數:

實例說明

在網頁中顯示數據時,需要將Calendar對象轉換為日期時間字符串再進行顯示。本實例將講解如何將一個Calendar類型的對象轉換為指定格式的日期時間字符串,其運行結果如圖5.21所示。

圖5.21 將Calendar對象轉換為日期時間字符串

關鍵技術

本實例主要應用Calendar類的get()方法,使用該方法可以獲得Calendar對象中的年、月、日、小時、分鐘、秒等。

設計過程

(1)新建名為StringUtil的JavaBean類,用于將Calendar對象轉換為指定格式的日期字符串,關鍵代碼如下:

        public class StringUtil {
        private String dateStr;                                  //日期字符串
        private Calendar calendar=null;                          //將字符串轉換后的Calendar對象
        public String getDateStr() {
              int year=calendar.get(calendar.YEAR);              //獲得年
              int month=calendar.get(calendar.MONTH)+1;          //獲得月
              int date=calendar.get(calendar.DAY_OF_MONTH);      //獲得日
              dateStr=year+"-"+month+"-"+date;                   //生成日期字符串,格式為2008-8-8
              return dateStr;
        }
        ……       //省略了其他屬性的get和set方法
        }

(2)新建index.jsp頁,用于輸入表單信息,關鍵代碼如下:

        <form action="tocalendar.jsp"method="post">
            <table>
              <tr>
                  <td align="right">請輸入日期字符串:</td>
                  <td><input type="text"name="datestr"/>
                      <font>格式為:2008-08-08</font>
                  </td>
              </tr>
              <tr>
                  <td colspan="2"align="center"><input type="submit"value="轉換"/></td>
              </tr>
            </table>
        </form>

(3)新建todatestr.jsp頁,該頁首先獲得表單的日期字符串,將字符串中的日期轉換為一個Calendar對象,然后再調用StringUtil類將這個Calendar對象轉換為日期字符串,關鍵代碼如下:

        <%
              String dateStr=request.getParameter("datestr");            //獲得表單中的字符串
              String date[]=dateStr.split("-");                          //根據"-"分隔字符串為數組
              int y=Integer.parseInt(date[0]);                           //獲得字符串中的年
              int m=Integer.parseInt(date[1]);                           //獲得字符串中的月
              int d=Integer.parseInt(date[2]);                           //獲得字符串中的日
              Calendar c=Calendar.getInstance();                         //創建一個Calendar對象
              c.set(y, m-1, d);                                          //設置Calendar對象的年月日
        %>
        <! -- 使用useBean動作標簽導入JavaBean對象 -->
        <jsp:useBean id="strBean"class="com.lh.bean.StringUtil"></jsp:useBean>
        <! -- 對StringUtil類的calendar屬性賦值 -->
        <jsp:setProperty property="calendar"name="strBean"value="<%=c %>"/>
        <table>
              <tr>
                  <td align="right">轉換為日期字符串:</td>
                  <td>
                      <! -- 從StringUtil對象中獲得dateStr的屬性值 -->
                      <jsp:getProperty property="dateStr"name="strBean"/>
                  </td>
              </tr>
        </table>

秘笈心法

在實際開發應用中,有時需要將Calendar對象轉換為不同格式的日期時間字符串。例如,格式可能為“yyyy-mm-dd”“yyyy-mm-dd hh:mm:ss”“yyyy/mm/dd”“yyyy年mm月dd日”。所以,讀者應該掌握本實例的實現方法。

實例146 獲得系統當前時間的字符串格式

光盤位置:光盤\MR\05\146

初級

實用指數:

實例說明

在實際開發過程中,有時需要獲取系統當前的時間,如用戶注冊時的注冊時間,雖然用戶不需要填寫注冊時間,但是在后臺需要獲取當前的系統時間作為注冊時間。本實例介紹的是如何獲得系統當前時間的字符串格式,其運行結果如圖5.22所示。

圖5.22 獲得系統當前時間的字符串格式

關鍵技術

本實例主要通過java.util.Calendar類以及java.util.Date類來獲得系統的當前時間。

使用Calendar類時,要通過該類對象的get()方法獲得時間中的年、月、日、小時、分鐘和秒,然后將這些值組成一個字符串。

使用Date類時,可以通過java.text.SimpleDateFormat類將一個Date對象格式化為指定格式的日期時間字符串,代碼如下:

        Date date = new Date();
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh-mm-ss");
        String dateStr = format.format(date);

設計過程

(1)新建名為StringUtil的JavaBean類,該類實現和獲得系統當前時間的兩種方法,關鍵代碼如下:

        public class StringUtil {
        private String timeStr1;                           //日期字符串
        private String timeStr2;
        public String getTimeStr1(){                       //使用Calendar對象獲得系統當前時間的方法
              Calendar c=Calendar.getInstance();           //創建表示當前時間的Calendar對象
              int year=c.get(c.YEAR);                      //獲得當前時間的年
              int month=c.get(c.MONTH)+1;                  //獲得當前時間的月
              int date=c.get(c.DAY_OF_MONTH);              //獲得當前時間的日
              int hour=c.get(c.HOUR_OF_DAY);               //獲得當前時間的小時
              int minute=c.get(c.MINUTE);                  //獲得當前時間的分鐘
              int second=c.get(c.SECOND);                  //獲得當前時間的秒
              timeStr1 = year+"-"+month+"-"+date+" "+hour+":"+minute+":"+second;
              return timeStr1;
        }
        public String getTimeStr2(){                       //使用Date對象獲得系統當前時間的方法
              Date date=new Date();                        //創建表示當前時間的Date對象
              //創建格式化日期時間對象
              SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
              timeStr2=format.format(date);                //格式化當前時間的Date對象
              return timeStr2;
        }
        }

(2)新建index.jsp頁,在該頁中通過StringUtil類來獲得系統的當前時間字符串,關鍵代碼如下:

        <! -- 使用useBean動作標簽導入JavaBean對象 -->
        <jsp:useBean id="strBean"class="com.lh.bean.StringUtil"></jsp:useBean>
            <table>
              <tr>
                  <td align="right">使用Calendar對象獲得的當前時間:</td>
                  <td>
                      <! -- 從StringUtil對象中獲得timeStr1的屬性值 -->
                      <jsp:getProperty property="timeStr1"name="strBean"/>
                  </td>
              </tr>
              <tr>
                  <td align="right">使用Date對象獲得的當前時間:</td>
                  <td >
                      <! -- 從StringUtil對象中獲得timeStr2的屬性值 -->
                      <jsp:getProperty property="timeStr2"name="strBean"/>
                  </td>
              </tr>
        </table>

秘笈心法

在實際的開發應用中,經常需要根據當前系統時間來實現一些業務邏輯,因此讀者應該掌握如何獲取當前的系統時間。

實例147 計算出兩個日期相差的天數

光盤位置:光盤\MR\05\147

初級

實用指數:

實例說明

在實際開發過程中,有時會遇到計算兩個日期相差天數的情況。本實例將講解如何計算出兩個日期相差的天數,其運行效果如圖5.23所示。

圖5.23 計算出兩個日期相差的天數

關鍵技術

本實例主要應用Calendar對象中的getTimeInMillis()方法,此方法返回一個long型的時間值,以毫秒為單位。首先獲得兩個日期對象的long類型的時間值,然后這兩個值相減之后再除以一天的毫秒值(1000*60*60*24),得到的值取整即兩個日期相差的天數。

設計過程

(1)新建名為StringUtil的JavaBean類,該類用于計算兩個日期相差的天數,關鍵代碼如下:

        public class StringUtil {
        private String dateStr1;                                  //第一個日期字符串
        private String dateStr2;                                  //第二個日期字符串
        private int minus;                                        //兩個日期的差
        public int getMinus() {
              Calendar c1=this.getCalendar(dateStr1);             //根據第一個日期字符串獲得Calendar對象
              Calendar c2=this.getCalendar(dateStr2);             //根據第二個日期字符串獲得Calendar對象
              long t1=c1.getTimeInMillis();                       //獲得此對象的時間值,以毫秒為單位
              long t2=c2.getTimeInMillis();                       //獲得此對象的時間值,以毫秒為單位
              long t=1000*60*60*24;                               //一天的毫秒:1000毫秒*60秒*60分鐘*24小時
              minus=  (int)((t2-t1)/t);                           //獲得兩個日期相差的天數
              return minus;
        }
        public Calendar getCalendar(String dateStr) {
              Date date=null;                                    //聲明一個Date類型的對象
              SimpleDateFormat format=null;                      //聲明格式化日期的對象
              Calendar calendar = null;
              if(dateStr! =null){
                      format = new SimpleDateFormat("yyyy-MM-dd"); //創建日期的格式化類型
                      calendar=Calendar.getInstance();             //創建一個Calendar類型的對象
                   try{                                            //forma.parse()方法會拋出異常
                      date=format.parse(dateStr);                  //解析日期字符串,生成Date對象
                      calendar.setTime(date);                      //使用Date對象設置此Calendar對象的時間
                   }catch(ParseException e){
                      e.printStackTrace();
                   }
              }
              return calendar;
        }
        ……       //此處省略了其他屬性的get和set方法
        }

(2)新建index.jsp頁,用于輸入表單信息,關鍵代碼如下:

        <form action="getminus.jsp"method="post">
            <table>
              <tr>
                  <td align="right">請輸入第一個日期:</td>
                  <td><input type="text"name="datestr1"/><font>格式為:2008-08-80</font></td>
              </tr>
              <tr>
                  <td align="right">請輸入第二個日期:</td>
                  <td><input type="text"name="datestr2"/><font>格式為:2008-08-80</font></td>
              </tr>
              <tr>
                  <td colspan="2"align="center"><input type="submit"value="提交"/></td>
              </tr>
              </table>
        </form>

(3)新建getminus.jsp頁,在該頁中通過StringUtil提供的方法計算出兩個日期相差的天數,關鍵代碼如下:

        <%
              String dateStr1 = request.getParameter("datestr1");
              String dateStr2 = request.getParameter("datestr2");
        %>
        <! -- 使用useBean動作標簽導入JavaBean對象 -->
        <jsp:useBean id="strBean"class="com.lh.bean.StringUtil"></jsp:useBean>
        <! -- 對StringUtil類的屬性賦值 -->
        <jsp:setProperty property="dateStr1"name="strBean"value="<%=dateStr1 %>"/>
        <jsp:setProperty property="dateStr2"name="strBean"value="<%=dateStr2 %>"/>
        <table>
              <tr>
                  <td align="right">第一個日期為:</td>
                  <td>
                      <! -- 從StringUtil對象中獲得屬性值 -->
                      <jsp:getProperty property="dateStr1"name="strBean"/>
                  </td>
              </tr>
              <tr>
                  <td align="right">第二個日期為:</td>
                  <td>
                      <jsp:getProperty property="dateStr2"name="strBean"/></td>
              </tr>
              <tr >
                  <td align="right">兩個日期相差的天數為:</td>
                  <td >
                      <jsp:getProperty property="minus"name="strBean"/>
                  </td>
              </tr>
        </table>

秘笈心法

在實際開發過程中,經常需要計算兩個日期相差的天數,所以讀者應該掌握本實例的實現方法。

主站蜘蛛池模板: 腾冲县| 兴安县| 汕头市| 盐源县| 淮北市| 塘沽区| 大安市| 腾冲县| 富宁县| 井陉县| 武川县| 无为县| 南部县| 钦州市| 大新县| 甘泉县| 武定县| 红河县| 新乡县| 海盐县| 乐亭县| 青铜峡市| 富宁县| 唐河县| 江华| 崇州市| 二手房| 普定县| 新余市| 宜兰市| 洪湖市| 渭源县| 保康县| 隆德县| 来安县| 阜康市| 五大连池市| 长春市| 建始县| 武隆县| 化德县|