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 siriKaedah & Perihalan
1
序号方法 & 描述
1boolean after(Date date)
如果调用的 Date 对象中包含的日期在 date 指定的日期之后,则返回 true,否则返回 false。
2boolean before(Date date)
如果调用的 Date 对象中包含的日期在 date 指定的日期之前,则返回 true,否则返回 false。
3Object clone( )
重复调用 Date 对象。
4int compareTo(Date date)
把调用对象的值与 date 的值进行比较。如果两个值是相等的,则返回 0。如果调用对象在 date 之前,则返回一个负值。如果调用对象在 date 之后,则返回一个正值。
5int compareTo(Object obj)
如果 obj 是 Date 类,则操作等同于 compareTo(Date)。否则,它会抛出一个 ClassCastException。
6boolean equals(Object date)
如果调用的 Date 对象中包含的时间和日期与 date 指定的相同,则返回 true,否则返回 false。
7long getTime( )
返回 1970 年 1 月 1 日以来经过的毫秒数。
8int hashCode( )
为调用对象返回哈希代码。
9void setTime(long time)
设置 time 指定的时间和日期,这表示从 1970 年 1 月 1 日午夜以来经过的时间(以毫秒为单位)。
10String toString( )
转换调用的 Date 对象为一个字符串,并返回结果。
boolean selepas(Tarikh tarikh)<🎜>
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 semasa

Isnin 21 Jun 21:46:49 GMT+04:00 2010

显示当前的日期和时间

Mon Jun 21 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 semasa

Isnin 2010.06.21 pada 10:06:44 PM GMT+ 04:00

显示当前的日期和时间

Mon 2010.06.21 at 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:

字符描述实例
GEra 指示器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
aA.M./P.M. 标记PM
k一天中的第几小时(1~24)24
K带有 A.M./P.M. 的小时(0~11)10
z时区Eastern Standard Time
'Escape for textDelimiter
"单引号`

Untuk senarai lengkap kaedah yang tersedia untuk bekerja dengan tarikh, anda boleh merujuk kepada dokumentasi Java standard.