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.

  • 🔘 avantajı: Her bir çekirdek yöntemi Java Ekstra yapılandırma gerektirmeden JSP sayfası içinde kullanılabilir durumda kalır.
  • ☑️ Yapıcılar: Date() fonksiyonu mevcut anı döndürürken, Date(long) fonksiyonu 1970'ten bu yana geçen milisaniyelerden bir anı yeniden oluşturur.
  • Yöntem: after, before, compareTo, equals, getTime, setTime ve toString fonksiyonları karşılaştırma işlemlerinin çoğunu kapsar.
  • 🧪 İfade etiketi: Tek bir ifade etiketi, tarih nesnesini doğrudan oluşturulan HTML'ye yazdırır.
  • Biçimlendirme: SimpleDateFormat ve JSTL formatDate etiketi, değerin tam olarak nasıl görüneceğini kontrol eder.
  • 📊 Modern API: LocalDateTime gibi java.time sınıfları, kullanımdan kaldırılmış olarak işaretlenen eski Date yöntemlerinin yerini almaktadır.

JSP Güncel Tarih ve Saat

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.

JSP sayfasının tarayıcı çıktısı, geçerli tarih ve saati yazdırıyor.

Çı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 saat ZoneId.of("Asia/Kolkata").
  • Instant — bir makine zaman damgası, en yakın eşleşme getTime() 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 Date olmadan <%@ page import="java.util.*" %> Tam nitelikli olmadıkça derleme başarısız olur. java.util.Date Bu sayfadaki örnekte olduğu gibi, yazılı olarak gösterilir.
  • Yanlış desen harfleri: mm dakikadır ve MM aylardır ve DD Ayı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. Ayarla timeZone Hedef 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. javax JSTL 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.

SSS

java.util. Ekle <%@ page import="java.util.*" %> Sayfanın en üstüne yazın veya tam nitelikli olanı yazın. java.util.Date Bu sayfadaki örnekte olduğu gibi, ifade etiketi içinde.

Yapay zekâ asistanları, bir format kalıbını sade İngilizceye çevirebilir, eski bir formatı dönüştürebilir. Date kısa bir kesit içine java.timeAyrıca, paylaşılan bir biçimlendiricideki iş parçacığı güvenliği sorununa dikkat çekin. Öneriyi test edin, çünkü yanlış bir kalıp harfi bile sorunsuz bir şekilde derlenir.

Evet. GitHub Yardımcı Pilotu Yorum satırından scriptlet'leri ve taglib yönergelerini tamamlar. JSTL'yi kontrol edin. uri Sıklıkla eski sürüme geri döndüğü için bu durum sorun yaratır. java.sun.com Jakarta'dakinden ziyade daha değerli.

new Date() Sayfayı çalıştıran sunucunun saatini ve varsayılan saat dilimini okur. Ziyaretçinin yerel saati önemliyse, biçimlendiriciye açık bir saat dilimi iletin veya istemci tarafında dönüştürün.

getTime() bir verir long: 1 Ocak 1970'ten bu yana geçen milisaniye sayısı. toString() Varsayılan yerel ayardan oluşturulmuş okunabilir bir dize döndürür. Sayıyı saklayın, dizeyi görüntüleyin.

Hayır. Sınıf desteklenmeye devam ediyor, ancak alan erişimcilerinin çoğu JDK 1.1'den beri kullanımdan kaldırılma uyarısı taşıyor. Yeni kodun bunu kullanması bekleniyor. java.time, ve Date.from() İki API arasında köprü kurar.

Evet. Nesneyi şu şekilde tanımlayın: <jsp:useBean> ve bunu JSTL ile oluşturun <fmt:formatDate> Etiket. Herhangi bir scriptlet'e gerek duyulmaması, işaretlemenin okunabilirliğini ve bakımını kolaylaştırır.

İfade etiketi <%= %>İçeriğinde ne varsa değerlendirilir ve toString() Sonuç, yanıta yazılır; bu nedenle örnek sayfada tarih tek satırda yazdırılır.

Bu yazıyı şu şekilde özetleyin: