JSP Güncel Tarih ve Saat
⚡ Akıllı Özet
JSP tarih işlemesi düz çekirdek yapısına dayanır. JavaBu sayede java.util.Date sınıfı ve yapıcıları, geçerli tarih ve saati bir sayfaya yazdırmak için doğrudan bir scriptlet veya ifade etiketi içinden çağrılabilir.
JSP Tarih İşleme
JSP'nin en büyük avantajı, tüm temel yöntemlerinin aynı olmasıdır. Java JSP'de kullanılabilir.
Bu bölümde, şunları kullanacağız: Date sınıfı java.util Hem tarihi hem de saati tek bir nesnede tutan bir paket. Bu sınıf her yerde mevcuttur. JSP Paket, sayfa yönergesiyle içe aktarıldığı anda sayfa görüntülenir.
İki kurucuyu destekler:
| Inşaatçı | Ne yapar |
|---|---|
Date() |
Bize mevcut tarih ve saati veriyor. |
Date(long millisec) |
Bu, 1 Ocak 1970'ten bu yana geçen milisaniye cinsinden bir parametre alır. |
MKS Date Bu sınıf ayrıca aşağıda listelenen yöntemleri de sunmaktadır. Java Temel dönüş tipleri küçük harflerle yazılır ve bu şekilde görünürler. Java API.
| Yöntem | Açıklama |
|---|---|
boolean after(Date date) |
Bu, belirtilen tarih parametresinden sonra olup olmadığını gösterir. |
boolean before(Date date) |
Bu, belirtilen tarih parametresinden önce olup olmadığını gösterir. |
Object clone() |
Bu işlem, tarih nesnesinin bir kopyasını oluşturur. |
int compareTo(Date date) |
Bu, tarih sınıfı nesnesini başka bir nesneyle karşılaştırır. |
int compareTo(Object date) |
Bu, bir nesne sınıfı nesnesini başka bir nesneyle karşılaştırır. Bu aşırı yükleme, jenerik öncesi API'ye aittir; mevcut Java yalnızca ortaya çıkarır compareTo(Date). |
boolean equals(Object date) |
İki tarih nesnesinin eşit olup olmadığını kontrol eder. |
long getTime() |
1 Ocak 1970'ten itibaren geçen süreyi milisaniye cinsinden hesaplar. |
int hashCode() |
Verilen tarihin karma kodunu alır. |
void setTime(long time) |
Verilen tarih nesnesinin zamanını ayarlar. |
String toString() |
Bu işlem, tarih nesnesini bir dize nesnesine dönüştürür. |
Not: Bu sınıfın alan erişimcileri, örneğin; getYear(), getMonth() hem de toLocaleString()JDK 1.1'den beri kullanımdan kaldırılmıştır. Sınıfın kendisi hala çalışıyor, ancak yeni kodun kullanması bekleniyor. Calendar, DateFormatYa da java.time Bu sayfanın aşağısında daha ayrıntılı olarak açıklanan dersler.
Örnek: JSP'de Geçerli Tarih ve Saati Görüntüleme
Örnek:
Bu örnekte, tarih nesnesini kullanarak geçerli tarih ve saati alıyoruz.
<%@ 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>
Kodun açıklaması:
Code Çizgi 11: Geçerli tarih ve saati getirmek için tarih nesnesini kullanıyoruz.
Modern karşılığı: Yukarıdaki kod, yayınlandığı haliyle aynen korunmuştur. toLocaleString() ile değiştirildi DateFormat.format(Date date) JDK 1.1 itibariyle, yani güncel bir sayfa şöyle yazacaktır. <%= java.text.DateFormat.getDateTimeInstance().format(new java.util.Date()) %> yerine. <%= %> İfade etiketi kendisi değişmeden kalır.
Yukarıdaki kodu çalıştırdığınızda aşağıdaki çıktıyı alırsınız.
Çıktı:
Şu anki tarih ve saati alıyoruz.
JSP'de Tarih ve Saati Nasıl Biçimlendirirsiniz?
yazdırma Date Nesne doğrudan varsayılan yerel ayarın ürettiği sonucu verir, bu da nadiren bir sayfanın ihtiyaç duyduğu biçimdir. Çıktıyı kontrol eden iki yaklaşım vardır.
Birincisi mantığı koruyor. Java ve kullanır SimpleDateFormatDesendeki her harf, değerin bir bölümünü temsil eder.
<%@ 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 %>
| Desenli harf | anlam | Örnek E-posta |
|---|---|---|
yyyy |
dört basamaklı yıl | 2026 |
MM |
Ay numarası | 07 |
dd |
Ayın günü | 29 |
HH |
Saat, 24 saatlik saat sistemi | 18 |
mm |
dakika | 45 |
ss |
saniye | 02 |
İkinci yaklaşım, sayfayı şunlardan arındırır: Java kod yerine JSTL biçimlendirme kütüphanesini kullanıyor, bu da diğerleriyle iyi bir uyum sağlıyor. JSP eylem etiketleri.
<%@ 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" />
MKS uri Yukarıda gösterilen değer, Jakarta EE 10 ve sonraki sürümlerinde kullanılan JSTL 3.0 biçimidir. Daha eski bir konteynerde çalışan sayfalar hala bu biçimi kullanmaktadır. http://java.sun.com/jsp/jstl/fmtVe konteynerler uyumluluk için eski URI'yi kabul etmeye devam ediyor. type öznitelik seçimleri date, timeya da both, süre dateStyle, timeStyle hem de timeZone Sonucu iyileştirin.
JSP'de `java.time` API'sini kullanarak tarihleri işleme
Java 8 tanıtıldı java.time Bu paket artık tarihlerle çalışmanın önerilen yoludur ve herhangi bir alanda tarihlerle çalışmanın en uygun yöntemidir. Java JSP sayfası da dahil olmak üzere kod. Aksine DateBu sınıflar değiştirilemez ve iş parçacığı güvenlidir, bu nedenle tek bir biçimlendirici istekler arasında güvenli bir şekilde paylaşılabilir.
<%@ 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) %>
Sayfanın gerçek ihtiyacına uygun sınıfı seçin:
LocalDate— Saati belirtilmeyen bir tarih, örneğin doğum tarihi.LocalTime— Açılış saati gibi, tarihi belirtilmemiş bir zaman dilimi.LocalDateTime— Saat dilimi belirtilmemiş bir tarih ve saat.ZonedDateTime— örneğin, bir zaman dilimine bağlı bir tarih ve saatZoneId.of("Asia/Kolkata").Instant— bir makine zaman damgası, en yakın eşleşmegetTime()döner.
Mevcut kodun tek seferde yeniden yazılması gerekmiyor, çünkü Date.from(instant) hem de date.toInstant() İki API arasında dönüştürme işlemi yapın.
JSP'de Sık Yapılan Tarih İşleme Hataları
Geliştirme ortamında doğru yazdırılan bir tarih, üretim ortamında yine de yanlış olabilir. Aşağıdaki hatalar, bu tür raporların çoğunu açıklamaktadır.
- Eksik ithalat: kullanma
Dateolmadan<%@ page import="java.util.*" %>Tam nitelikli olmadıkça derleme başarısız olur.java.util.DateBu sayfadaki örnekte olduğu gibi, yazılı olarak gösterilir. - Yanlış desen harfleri:
mmdakikadır veMMaylardır veDDAyın günü değil, yılın günüdür. - Sunucu saat dilimi:
new Date()Bu, ziyaretçinin değil, sunucunun saatini yansıtır. AyarlatimeZoneHedef kitle başka bir yerdeyken biçimlendirme etiketinde. - SimpleDateFormat paylaşımı: Bu sınıf iş parçacığı güvenli değildir, bu nedenle istekler arasında paylaşılan statik bir örnek bozuk çıktı döndürebilir. Her istek için bir tane oluşturun veya şunu kullanın:
DateTimeFormatter. - Güncelleme sonrasında boş sayfa: Jakarta EE 10'da bir konteyner eskiyi reddediyor.
javaxJSTL jar dosyaları kullanıldığı için, Jakarta bileşenleri yerleştirilene kadar biçimlendirme etiketi olduğu gibi metin olarak görüntülenir. - Bir metin dizisini biçimlendirme: İstek parametresinden çekilen değer metindir ve ayrıştırılmalıdır.
parse()Tarih yöntemlerinden herhangi biri bunu kabul etmeden önce.

