Date trong Servlet Một trong những lợi thế to lớn của việc sử dụng Servlet là bạn có thể sử dụng hầu hết các phương thức có sẵn trong Core Java.. Date long millisec Khi bạn đã có đối tượ
Trang 1Date trong Servlet
Một trong những lợi thế to lớn của việc sử dụng Servlet là bạn có thể sử dụng hầu hết các phương thức có sẵn trong Core Java Chương này lướt qua về lớp Date có sẵn
trongjava.util package trong Java, lớp này bao đóng date và time hiện tại
Lớp Date hỗ trợ hai constructor Mẫu constructor đầu tiên khởi tạo đối tượng với date và time hiện tại:
Date( )
Mẫu constructor thứ hai chấp nhận một tham số, mà tương đương với số mili giây, đã trôi qua từ 1/1/1970
Date( long millisec)
Khi bạn đã có đối tượng Date, bạn có thể triệu hồi bất kỳ phương thức nào sau đây để hỗ trợ bạn xử lý với Date
STT Phương thức và Miêu tả
1
boolean after(Date date)
Trả về true nếu đối tượng đang triệu hồi chứa một date mà chậm hơn một date đã được xác định, nếu không thì trả về false
2 boolean before(Date date)
Trả về true nếu đối tượng đang triệu hồi chứa một date mà sớm hơn một date đã được xác định, nếu không thì trả về false
3 Object clone( )
Tạo bản sao đối tượng Date đang triệu hồi
Trang 24 int compareTo(Date date)
So sánh giá trị của đối tượng đang gọi với giá trị đó của date Trả về 0 nếu các giá trị này là tương đương Trả về một giá trị âm nếu đối tượng đang gọi là sớm hơn date Trả về một giá trị dương nếu đối tượng đang triệu hồi là chậm hơn date
5 int compareTo(Object obj)
Tiến hành tương tự như compareTo(Date) nếu obj là một lớp Date Nếu không thì, nó ném một ClassCastException
6 boolean equals(Object date)
Trả về true nếu đối tượng Date đang triệu hồi chứa date và time giống như date đã được xác định, nếu không thì, nó trả về false
7 long getTime( )
Trả về số mili giây đã trôi qua từ 1/1/1970
8 int hashCode( )
Trả về một hash code cho đối tượng đang triệu hồi
9 void setTime(long time)
Thiết lập date và time như time đã cho, mà biểu diễn thời gian đã trôi qua bằng mili giây từ 1/1/1970
10 String toString( )
Biến đổi đối tượng Date đang gọi thành một String và trả về kết quả đó
Trang 3Nhận Date và Time hiện tại
Để nhận một Date và Time hiện tại là rất dễ dàng trong Java Servlet Bạn sử dụng một đối
tượng Date với phương thức toString() để in date và time hiện tại như sau:
// Import required java libraries import java.io.*; import java.util.Date;
import javax.servlet.*; import javax.servlet.http.*; // Extend HttpServlet
class public class CurrentDate extends HttpServlet { public void
doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException { // Set
response content type response.setContentType("text/html");
PrintWriter out = response.getWriter(); String title = "Display Current
Date & Time"; Date date = new Date(); String docType =
"<!doctype html public \"-//w3c//dtd html 4.0 " +
"transitional//en\">\n"; out.println(docType + "<html>\n" +
"<head><title>" + title + "</title></head>\n" + "<body
bgcolor=\"#f0f0f0\">\n" + "<h1 align=\"center\">" + title + "</h1>\n" +
"<h2 align=\"center\">" + date.toString() + "</h2>\n" +
"</body></html>"); } }
Biên dịch Servlet trên và tạo các entry thích hợp trong web.xml, sau đó triệu hồi Servlet này
bởi sử dụng http://localhost:8080/CurrentDate Nó sẽ cho kết quả sau:
Display Current Date & Time
Mon Jun 21 21:46:49 GMT+04:00 2010
Refresh nó và bạn sẽ thấy sự khác nhau trong kết quả mỗi lần bạn refresh
So sánh Date trong Servlet
Để so sánh hai date, bạn sử dụng các phương thức sau có sẵn trong Java cho Servlet của
bạn:
• Bạn có thể sử dụng getTime() để nhận số mili giây đã trôi qua từ 1/1/1970 cho cả
hai đối tượng và sau đó so sánh hai giá trị này
• Bạn có thể sử dụng before(), after(), và equals() Ví dụ, vì tháng thứ 12 là đến trước
tháng thứ 18, nên new Date(99, 2, 12).before(new Date(99, 2, 18)) trả về true
Trang 4• Bạn cũng có thể sử dụng phương thức compareTo(), được định nghĩa bởi
Comparable Interface và được triển khai bởi Date
Định dạng Date sử dụng SimpleDateFormat
SimpleDateFormat là một lớp cụ thể để định dạng và parse các date theo một phương thức
nhạy miền (locale-sensitive) SimpleDateFormat cho phép bạn bắt đầu bởi việc chọn bất kỳ
pattern nào đã được định nghĩa bởi người sử dụng để định dạng date và time
Chúng ta chỉnh sửa ví dụ trên như sau:
// Import required java libraries import java.io.*; import java.text.*; import
java.util.Date; import javax.servlet.*; import javax.servlet.http.*; //
Extend HttpServlet class public class CurrentDate extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException
{ // Set response content type
response.setContentType("text/html"); PrintWriter out =
response.getWriter(); String title = "Display Current Date & Time";
Date dNow = new Date( ); SimpleDateFormat ft = new
SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz"); String docType =
"<!doctype html public \"-//w3c//dtd html 4.0 " +
"transitional//en\">\n"; out.println(docType + "<html>\n" +
"<head><title>" + title + "</title></head>\n" + "<body
bgcolor=\"#f0f0f0\">\n" + "<h1 align=\"center\">" + title + "</h1>\n" +
"<h2 align=\"center\">" + ft.format(dNow) + "</h2>\n" +
"</body></html>"); } }
Biên dịch Servlet trên một lần nữa và sau đó gọi Servlet này bởi sử dụng
http://localhost:8080/CurrentDate Nó sẽ cho kết quả sau:
Display Current Date & Time
Mon 2010.06.21 at 10:06:44 PM GMT+04:00
Trang 5
Mã hóa định dạng SimpleDateFormat trong Servlet
Để xác định định dạng thời gian, sử dụng một chuỗi time mẫu Trong pattern này, tất cả chữ cái ASCII được dự trữ (dành riêng) như là các ký tự pattern, mà được định nghĩa như sau:
G Tên mệnh danh của thời đại AD
y Năm trong dạng 4 ký số 2001
M Tháng trong năm July hoặc 07
d Ngày trong tháng 10
h Giờ trong dạng A.M./P.M (1~12) 12
H Giờ trong ngày (0~23) 22
m Phút trong giờ 30
s Giây trong phút 55
S Số mili giây 234
E Ngày trong tuần Tuesday
D Ngày trong năm 360
F Ngày của tuần trong tháng 2 (Wed thứ hai trong July)
Trang 6w Tuần trong năm 40
W Tuần trong tháng 1
k Giờ trong ngày (1~24) 24
K Giờ dạng A.M./P.M (0~11) 10
z Time zone Eastern Standard Time
' Dãy thoát cho văn bản Dấu giới hạn
" Trích dẫn đơn `
Bạn có thể tham khảo Java Documentation để có danh sách đầy đủ các phương thức thao tác với Date