- Java Web開發實例大全(基礎卷) (軟件工程師開發大系)
- 軟件開發技術聯盟
- 2646字
- 2021-03-26 13:01:25
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>
秘笈心法
在實際開發過程中,經常需要計算兩個日期相差的天數,所以讀者應該掌握本實例的實現方法。
- 從零開始構建企業級RAG系統
- 程序員面試筆試寶典(第3版)
- TypeScript Essentials
- Redis Applied Design Patterns
- PHP基礎案例教程
- Arduino開發實戰指南:LabVIEW卷
- Animate CC二維動畫設計與制作(微課版)
- Apache Karaf Cookbook
- MySQL數據庫管理與開發實踐教程 (清華電腦學堂)
- H5頁面設計:Mugeda版(微課版)
- Linux:Embedded Development
- Learning ArcGIS for Desktop
- Learning R for Geospatial Analysis
- LabVIEW虛擬儀器程序設計從入門到精通(第二版)
- Spring Boot+MVC實戰指南