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.

  • ๐Ÿ”˜ Keuntungan: Setiap metode inti Java tetap tersedia di dalam halaman JSP tanpa konfigurasi tambahan.
  • โ˜‘๏ธ Konstruktor: Date() mengembalikan momen saat ini, sedangkan Date(long) membangun kembali momen dari milidetik sejak tahun 1970.
  • โœ… metode: Fungsi after, before, compareTo, equals, getTime, setTime, dan toString mencakup sebagian besar pekerjaan perbandingan.
  • ๐Ÿงช Tag ekspresi: Sebuah tag ekspresi tunggal mencetak objek tanggal langsung ke dalam HTML yang dihasilkan.
  • ๏ธ Pemformatan: SimpleDateFormat dan tag formatDate JSTL mengontrol persis bagaimana nilai tersebut ditampilkan.
  • ๐Ÿ“Š API Modern: Kelas java.time seperti LocalDateTime menggantikan metode Date lama yang ditandai sebagai usang (deprecated).

JSP Tanggal dan Waktu Saat Ini

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.

Tampilan browser dari halaman JSP yang mencetak tanggal dan waktu saat ini.

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 yang getTime() 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 Date tanpa <%@ page import="java.util.*" %> gagal dikompilasi kecuali jika memenuhi syarat sepenuhnya java.util.Date dituliskan, seperti contoh pada halaman ini.
  • Huruf pola salah: mm menit dan MM adalah berbulan-bulan, dan DD adalah hari dalam setahun, bukan tanggal dalam bulan.
  • Zona waktu server: new Date() Mencerminkan jam server, bukan jam pengunjung. Atur timeZone pada 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 javax JAR 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.

Pertanyaan Umum Demo Slot

java.util. menambahkan <%@ page import="java.util.*" %> di bagian atas halaman, atau tuliskan kualifikasi lengkapnya java.util.Date di dalam tag ekspresi, seperti yang dilakukan contoh pada halaman ini.

Asisten AI dapat menerjemahkan pola format ke dalam bahasa Inggris sederhana, mengkonversi format yang lebih lama. Date cuplikan ke dalam java.time, dan tunjukkan masalah keamanan thread pada formatter bersama. Uji saran tersebut, karena huruf pola yang salah masih dapat dikompilasi dengan bersih.

Ya. Kopilot GitHub Melengkapi scriptlet dan arahan taglib dari komentar. Periksa JSTL. uri hal itu menghasilkan, karena seringkali secara otomatis menggunakan versi yang lebih lama. java.sun.com nilai yang lebih baik daripada yang di Jakarta.

new Date() Membaca jam dan zona waktu default dari server yang menjalankan halaman. Berikan zona waktu eksplisit ke formatter, atau konversikan di sisi klien, jika waktu lokal pengunjung yang penting.

getTime() mengembalikan a long: jumlah milidetik yang telah berlalu sejak 1 Januari 1970. toString() Mengembalikan string yang mudah dibaca yang dibangun dari lokal default. Simpan angkanya, tampilkan stringnya.

Tidak. Kelas tersebut tetap didukung, tetapi sebagian besar aksesor field-nya telah membawa peringatan penghentian penggunaan sejak JDK 1.1. Kode baru diharapkan menggunakan java.time, dan Date.from() menjembatani kedua API tersebut.

Ya. Deklarasikan objek dengan <jsp:useBean> dan merendernya dengan JSTL <fmt:formatDate> tag. Tidak diperlukan scriptlet, sehingga markup tetap mudah dibaca dan dipelihara.

Tag ekspresi <%= %>Apa pun yang terkandung di dalamnya akan dievaluasi dan nilainya toString() Hasilnya dituliskan ke dalam respons, itulah sebabnya halaman contoh mencetak tanggal dalam satu baris.

Ringkaslah postingan ini dengan: