Tarikh pemprosesan Servlet
Salah satu kelebihan terpenting menggunakan Servlets ialah anda boleh menggunakan kebanyakan kaedah yang tersedia dalam Java teras. Bab ini akan menerangkan kelas Tarikh dalam pakej java.util yang disediakan oleh Java Kelas ini merangkumi tarikh dan masa semasa.
Kelas tarikh menyokong dua pembina. Pembina pertama memulakan objek dengan tarikh dan masa semasa.
Date( )
Pembina di bawah menerima parameter yang sama dengan bilangan milisaat yang telah berlalu sejak tengah malam pada 1 Januari 1970.
Date(long millisec)
Setelah anda mempunyai objek Tarikh, anda boleh menggunakan tarikh dengan memanggil mana-mana kaedah yang disokong berikut:
Nombor siri | Kaedah & Perihalan | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 td> |
Jika tarikh yang terkandung dalam objek Tarikh yang dipanggil adalah selepas tarikh yang ditentukan mengikut tarikh, ia akan mengembalikan benar, jika tidak ia mengembalikan palsu. | ||||||||||||||||||||||
2 | <🎜>boolean sebelum(Tarikh tarikh)<🎜> Jika tarikh yang terkandung dalam objek Tarikh yang dipanggil dinyatakan dalam tarikh sebelum tarikh, mengembalikan benar, jika tidak mengembalikan palsu. | ||||||||||||||||||||||
3 | <🎜>Klon objek( )<🎜> Panggil objek Date berulang kali. | ||||||||||||||||||||||
4 | <🎜>int compareTo(Date date)<🎜> Bandingkan nilai objek panggilan dengan nilai tarikh . Jika kedua-dua nilai adalah sama, 0 dikembalikan. Jika objek panggilan mendahului tarikh, nilai negatif dikembalikan. Jika objek panggilan datang selepas tarikh, nilai positif dikembalikan. | ||||||||||||||||||||||
5 | <🎜>int compareTo(Object obj)<🎜> Jika obj ialah kelas Date, operasi adalah bersamaan dengan compareTo( Tarikh). Jika tidak, ia membuang ClassCastException. | ||||||||||||||||||||||
6 | <🎜>boolean sama dengan(Tarikh objek)<🎜> Jika masa dan tarikh yang terkandung dalam objek Tarikh yang dipanggil ialah sama seperti Jika tarikh yang dinyatakan adalah sama, benar dikembalikan, jika tidak palsu dikembalikan. | ||||||||||||||||||||||
7 | <🎜>long getTime( )<🎜> Mengembalikan bilangan milisaat yang berlalu sejak 1 Januari 1970. | ||||||||||||||||||||||
8 | <🎜>int hashCode( )<🎜> Mengembalikan kod cincang untuk objek panggilan. | ||||||||||||||||||||||
9 | <🎜>void setTime(long time)<🎜> Tetapkan masa kepada masa dan tarikh yang ditentukan, yang bermaksud dari 1970 Masa berlalu (dalam milisaat) sejak tengah malam pada 1 Januari tahun. | ||||||||||||||||||||||
10 | <🎜>String toString( )<🎜> Tukar objek Date yang dipanggil kepada rentetan dan kembalikan hasilnya. |
Dapatkan tarikh dan masa semasa
Mendapatkan tarikh dan masa semasa dalam Java Servlet adalah sangat mudah. Anda boleh menggunakan kaedah toString() objek Tarikh mudah untuk mengeluarkan tarikh dan masa semasa seperti berikut:
// 导入必需的 java 库 import java.io.*; import java.util.Date; import javax.servlet.*; import javax.servlet.http.*; // 扩展 HttpServlet 类 public class CurrentDate extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置响应内容类型 response.setContentType("text/html"); PrintWriter out = response.getWriter(); String title = "显示当前的日期和时间"; 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>"); } }
Sekarang, mari kita susun Servlet di atas dan jalankan Cipta entri yang sesuai dalam fail web.xml dan kemudian panggil servlet dengan mengakses http://localhost:8080/CurrentDate. Ini akan menghasilkan hasil berikut:
Tunjukkan tarikh dan masa semasaIsnin 21 Jun 21:46:49 GMT+04:00 2010
|
Cuba muat semula URL http://localhost:8080/CurrentDate, anda akan melihat perbezaan dalam masa yang dipaparkan setiap beberapa saat.
Perbandingan Tarikh
Seperti yang dinyatakan di atas, anda boleh menggunakan semua kaedah Java yang tersedia dalam Servlet. Jika anda perlu membandingkan dua tarikh, begini caranya:
Anda boleh menggunakan getTime() untuk mendapatkan masa berlalu (dalam milisaat) sejak tengah malam pada 1 Januari 1970 untuk kedua-dua unit objek) dan kemudian bandingkan kedua-dua nilai.
Anda boleh menggunakan kaedah sebelum( ), selepas( ) dan sama dengan( ). Memandangkan 12hb sebelum 18hb dalam sebulan, contohnya, new Date(99, 2, 12).before(new Date (99, 2, 18)) kembali benar.
Anda boleh menggunakan kaedah compareTo( ), yang ditakrifkan oleh antara muka Sebanding dan dilaksanakan mengikut Tarikh.
Memformat tarikh menggunakan SimpleDateFormat
SimpleDateFormat ialah kelas konkrit untuk memformat dan menghuraikan tarikh dalam cara yang sensitif setempat. SimpleDateFormat membolehkan anda memilih mana-mana mod pemformatan tarikh-masa yang ditentukan pengguna.
Mari kita ubah suai contoh di atas seperti berikut:
// 导入必需的 java 库 import java.io.*; import java.text.*; import java.util.Date; import javax.servlet.*; import javax.servlet.http.*; // 扩展 HttpServlet 类 public class CurrentDate extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置响应内容类型 response.setContentType("text/html"); PrintWriter out = response.getWriter(); String title = "显示当前的日期和时间"; 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>"); } }
Kompilkan servlet di atas sekali lagi dan kemudian panggil servlet dengan mengakses http://localhost:8080/CurrentDate. Ini akan menghasilkan hasil berikut:
Tunjukkan tarikh dan masa semasaIsnin 2010.06.21 pada 10:06:44 PM GMT+ 04:00
|
Formatkan kod untuk format tarikh ringkas
Gunakan rentetan corak acara untuk menentukan format masa. Dalam mod ini, semua huruf ASCII dikhaskan sebagai huruf mod, yang ditakrifkan seperti berikut:
字符 | 描述 | 实例 |
---|---|---|
G | Era 指示器 | AD |
y | 四位数表示的年 | 2001 |
M | 一年中的月 | July 或 07 |
d | 一月中的第几天 | 10 |
h | 带有 A.M./P.M. 的小时(1~12) | 12 |
H | 一天中的第几小时(0~23) | 22 |
m | 一小时中的第几分 | 30 |
s | 一分中的第几秒 | 55 |
S | 毫秒 | 234 |
E | 一周中的星期几 | Tuesday |
D | 一年中的第几天 | 360 |
F | 所在的周是这个月的第几周 | 2 (second Wed. in July) |
w | 一年中的第几周 | 40 |
W | 一月中的第几周 | 1 |
a | A.M./P.M. 标记 | PM |
k | 一天中的第几小时(1~24) | 24 |
K | 带有 A.M./P.M. 的小时(0~11) | 10 |
z | 时区 | Eastern Standard Time |
' | Escape for text | Delimiter |
" | 单引号 | ` |
Untuk senarai lengkap kaedah yang tersedia untuk bekerja dengan tarikh, anda boleh merujuk kepada dokumentasi Java standard.