JSP Tanggal dan Waktu Saat Ini
โก Ringkasan Cerdas
Penanganan tanggal JSP bergantung pada inti biasa. JavaDengan demikian, kelas java.util.Date dan konstruktornya dapat dipanggil langsung dari scriptlet atau tag ekspresi untuk mencetak tanggal dan waktu saat ini pada halaman.
Penanganan Tanggal JSP
Keunggulan terbesar JSP adalah semua metode inti Java dapat digunakan di JSP.
Di bagian ini, kita akan menggunakan Date kelas dari java.util Paket ini menyimpan tanggal dan waktu dalam satu objek. Kelas ini tersedia di setiap JSP halaman akan muncul segera setelah paket diimpor dengan arahan halaman.
Ini mendukung dua konstruktor:
| Pembina | Apa yang dilakukannya |
|---|---|
Date() |
Ini memberi kita tanggal dan waktu saat ini. |
Date(long millisec) |
Ini memerlukan parameter berupa milidetik yang telah berlalu sejak 1 Januari 1970. |
The Date Kelas ini juga mengekspos metode-metode yang tercantum di bawah ini. Java Tipe pengembalian primitif ditulis dengan huruf kecil, seperti itulah tampilannya di Java API.
| metode | Deskripsi |
|---|---|
boolean after(Date date) |
Ini menunjukkan apakah tanggal ini jatuh setelah parameter tanggal yang diberikan. |
boolean before(Date date) |
Ini menunjukkan apakah tanggal ini jatuh sebelum parameter tanggal yang diberikan. |
Object clone() |
Ini membuat salinan objek tanggal. |
int compareTo(Date date) |
Fungsi ini membandingkan objek kelas tanggal dengan objek lainnya. |
int compareTo(Object date) |
Ini membandingkan objek kelas objek dengan objek lain. Overload ini termasuk dalam API pra-generik; saat ini Java hanya memperlihatkan compareTo(Date). |
boolean equals(Object date) |
Fungsi ini memeriksa apakah dua objek tanggal sama. |
long getTime() |
Ini mengambil waktu dalam satuan milidetik sejak 1 Januari 1970. |
int hashCode() |
Fungsi ini mengambil kode hash dari tanggal yang diberikan. |
void setTime(long time) |
Fungsi ini mengatur waktu dari objek tanggal yang diberikan. |
String toString() |
Fungsi ini mengubah objek tanggal menjadi objek string. |
Catatan: pengakses bidang dari kelas ini, seperti getYear(), getMonth() ke toLocaleString(), telah usang sejak JDK 1.1. Kelas itu sendiri masih berfungsi, tetapi kode baru diharapkan menggunakan Calendar, DateFormat, Atau java.time Kelas-kelas yang dijelaskan lebih lanjut di halaman ini.
Contoh: Menampilkan Tanggal dan Waktu Saat Ini di JSP
Contoh:
Dalam contoh ini, kita mengambil tanggal dan waktu saat ini menggunakan objek `date`.
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ page import="java.util.*" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru current Date</title> </head> <body> Today's date: <%= (new java.util.Date()).toLocaleString()%> </body> </html>
Penjelasan kodenya:
Code Baris 11: Kami menggunakan objek tanggal untuk mengambil tanggal dan waktu saat ini.
Padanan modernnya: Kode di atas tetap sama seperti yang dipublikasikan. toLocaleString() digantikan oleh DateFormat.format(Date date) sejak JDK 1.1, jadi halaman saat ini akan menulis <%= java.text.DateFormat.getDateTimeInstance().format(new java.util.Date()) %> sebagai gantinya. Itu <%= %> Tag ekspresi itu sendiri tidak berubah.
Ketika Anda menjalankan kode di atas, Anda akan mendapatkan keluaran berikut.
Keluaran:
Kami sedang mendapatkan tanggal dan waktu saat ini.
Cara Memformat Tanggal dan Waktu di JSP
Mencetak Date Objek tersebut secara langsung memberikan apa pun yang dihasilkan oleh lokal default, yang jarang sesuai dengan format yang dibutuhkan halaman. Ada dua pendekatan untuk mengontrol outputnya.
Yang pertama mempertahankan logika di dalamnya Java dan menggunakan SimpleDateFormat, di mana setiap huruf dalam pola tersebut mewakili satu bagian dari nilai tersebut.
<%@ page import="java.util.*, java.text.*" %> <% SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String today = fmt.format(new Date()); %> Today's date: <%= today %>
| Huruf pola | Arti | Example |
|---|---|---|
yyyy |
Tahun empat digit | 2026 |
MM |
Nomor bulan | 07 |
dd |
Hari bulan | 29 |
HH |
Jam, jam 24 jam | 18 |
mm |
menit | 45 |
ss |
Detik | 02 |
Pendekatan kedua menjaga agar halaman tetap bebas dari Java kode tersebut menggunakan pustaka pemformatan JSTL sebagai gantinya, yang cocok dipadukan dengan yang lainnya. Tag aksi JSP.
<%@ taglib prefix="fmt" uri="jakarta.tags.fmt" %> <jsp:useBean id="now" class="java.util.Date" /> <fmt:formatDate value="${now}" pattern="yyyy-MM-dd HH:mm:ss" />
The uri Nilai yang ditampilkan di atas adalah bentuk JSTL 3.0 yang digunakan oleh Jakarta EE 10 dan versi yang lebih baru. Halaman yang berjalan pada kontainer versi lama masih menggunakan http://java.sun.com/jsp/jstl/fmt, dan kontainer tetap menerima URI lama untuk kompatibilitas. The type atribut memilih date, time, atau both, Sementara dateStyle, timeStyle ke timeZone Perbaiki hasilnya.
Mengelola Tanggal dengan API java.time di JSP
Java 8 memperkenalkan java.time paket, dan sekarang ini adalah cara yang direkomendasikan untuk bekerja dengan tanggal di mana pun. Java kode, termasuk halaman JSP. Tidak seperti DateKelas-kelas ini bersifat tetap (immutable) dan aman untuk multi-threading, sehingga satu formatter dapat digunakan bersama dengan aman di berbagai permintaan.
<%@ page import="java.time.*, java.time.format.*" %> <% LocalDateTime now = LocalDateTime.now(); DateTimeFormatter f = DateTimeFormatter.ofPattern("dd MMM yyyy HH:mm"); %> Today's date: <%= f.format(now) %>
Pilih kelas yang sesuai dengan kebutuhan halaman:
LocalDateโ tanggal tanpa waktu, seperti tanggal lahir.LocalTimeโ waktu tanpa tanggal, seperti jam buka.LocalDateTimeโ tanggal dan waktu tanpa zona waktu.ZonedDateTimeโ misalnya, tanggal dan waktu yang terikat pada suatu zona.ZoneId.of("Asia/Kolkata").Instantโ cap waktu mesin, yang paling mendekati apa yanggetTime()kembali.
Kode yang sudah ada tidak perlu ditulis ulang sekaligus, karena Date.from(instant) ke date.toInstant() Mengonversi antara kedua API tersebut.
Kesalahan Umum Penanganan Tanggal di JSP
Tanggal yang tercetak dengan benar di mesin pengembang masih bisa salah di lingkungan produksi. Kesalahan-kesalahan di bawah ini mencakup sebagian besar laporan tersebut.
- Impor hilang: menggunakan
Datetanpa<%@ page import="java.util.*" %>gagal dikompilasi kecuali jika memenuhi syarat sepenuhnyajava.util.Datedituliskan, seperti contoh pada halaman ini. - Huruf pola salah:
mmmenit danMMadalah berbulan-bulan, danDDadalah hari dalam setahun, bukan tanggal dalam bulan. - Zona waktu server:
new Date()Mencerminkan jam server, bukan jam pengunjung. AturtimeZonepada tag pemformatan ketika audiens berada di tempat lain. - Berbagi SimpleDateFormat: Kelas ini tidak aman untuk multi-threading, jadi instance statis yang digunakan bersama di beberapa permintaan dapat menghasilkan output yang rusak. Buat satu instance per permintaan, atau gunakan
DateTimeFormatter. - Halaman kosong setelah pembaruan: sebuah kontainer di Jakarta EE 10 menolak yang lama
javaxJAR JSTL, sehingga tag pemformatan dirender sebagai teks literal sampai artefak Jakarta terpasang. - Memformat string: Nilai yang diambil dari parameter permintaan berupa teks dan harus diuraikan dengan
parse()sebelum metode penanggalan apa pun akan menerimanya.

