JSP 현재 날짜 및 시간

⚡ 스마트 요약

JSP의 날짜 처리는 기본 코어에 의존합니다. Java따라서 java.util.Date 클래스와 해당 생성자는 스크립틀릿이나 표현식 태그에서 직접 호출하여 현재 날짜와 시간을 페이지에 출력할 수 있습니다.

  • 🔘 이점: 핵심의 모든 방법 Java 별도의 설정 없이 JSP 페이지 내에서 계속 사용할 수 있습니다.
  • ☑️ 생성자 : Date() 함수는 현재 시점을 반환하는 반면, Date(long) 함수는 1970년 이후의 밀리초 단위로 특정 시점을 재구성합니다.
  • ✅ 행동 양식: after, before, compareTo, equals, getTime, setTime 및 toString 메서드는 대부분의 비교 작업을 처리합니다.
  • 🧪 표현 태그: 단일 표현식 태그는 날짜 객체를 생성된 HTML에 직접 출력합니다.
  • 🛠️ 포맷 : SimpleDateFormat과 JSTL의 formatDate 태그는 값이 표시되는 방식을 정확하게 제어합니다.
  • 📊 최신 API: LocalDateTime과 같은 java.time 클래스는 더 이상 사용되지 않는 것으로 표시된 기존의 Date 메서드를 대체합니다.

JSP 현재 날짜 및 시간

JSP 날짜 처리

JSP의 가장 큰 장점은 코어의 모든 메서드가 그렇다는 것입니다. Java JSP에서 사용할 수 있습니다.

이 섹션에서는 다음을 사용하겠습니다. Date 클래스 java.util 이 패키지는 날짜와 시간을 하나의 객체에 모두 저장합니다. 이 클래스는 모든 곳에서 사용할 수 있습니다. JSP 패키지를 페이지 지시문을 사용하여 가져오는 즉시 페이지가 표시됩니다.

두 가지 생성자를 지원합니다.

건설자 그것이하는 일
Date() 현재 날짜와 시간을 알려줍니다.
Date(long millisec) 이 함수는 1970년 1월 1일 이후 경과된 시간을 밀리초 단위로 매개변수로 받습니다.

The Date 해당 클래스는 아래에 나열된 메서드도 제공합니다. Java 기본 반환 타입은 소문자로 작성되며, 이는 실제 표시되는 방식입니다. Java API.

방법 기술설명
boolean after(Date date) 이 날짜가 주어진 날짜 매개변수 이후인지 여부를 알려줍니다.
boolean before(Date date) 이 날짜가 주어진 날짜 매개변수보다 이전인지 여부를 알려줍니다.
Object clone() 이 코드는 날짜 객체의 복사본을 생성합니다.
int compareTo(Date date) 이것은 날짜 클래스 객체를 다른 날짜 클래스 객체와 비교합니다.
int compareTo(Object date) 이는 객체 클래스 객체를 다른 객체와 비교합니다. 이 오버로드는 제네릭 이전 API에 속합니다. Java 노출만 compareTo(Date).
boolean equals(Object date) 두 날짜 객체가 같은지 확인합니다.
long getTime() 이 함수는 1970년 1월 1일 이후 경과된 시간을 밀리초 단위로 가져옵니다.
int hashCode() 이 함수는 주어진 날짜의 해시 코드를 가져옵니다.
void setTime(long time) 주어진 날짜 객체의 시간을 설정합니다.
String toString() 날짜 객체를 문자열 객체로 변환합니다.

참고 : 이 클래스의 필드 접근자(예: getYear(), getMonth() toLocaleString()`__init__` 메서드는 JDK 1.1 이후로 더 이상 사용되지 않습니다. 해당 클래스 자체는 여전히 작동하지만, 새로운 코드는 `__init__` 메서드를 사용해야 합니다. Calendar, DateFormat, 또는 java.time 수업에 대한 설명은 이 페이지 아래쪽에 있습니다.

예시: JSP에서 현재 날짜와 시간을 표시하는 방법

예:

이 예제에서는 날짜 객체를 사용하여 현재 날짜와 시간을 가져옵니다.

<%@ 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>

코드 설명:

Code 11 라인 : 현재 날짜와 시간을 가져오기 위해 날짜 객체를 사용하고 있습니다.

현대적 표현: 위 코드는 게시된 그대로 유지됩니다. toLocaleString() 에 의해 대체되었다 DateFormat.format(Date date) JDK 1.1 기준이므로 현재 페이지는 다음과 같이 표시됩니다. <%= java.text.DateFormat.getDateTimeInstance().format(new java.util.Date()) %> 대신에. 그만큼 <%= %> 표현 태그 자체는 변경되지 않았습니다.

위 코드를 실행하면 다음과 같은 출력이 나옵니다.

JSP 페이지의 브라우저 출력 결과 (현재 날짜 및 시간)

출력:

현재 날짜와 시간을 가져오고 있습니다.

JSP에서 날짜와 시간을 형식화하는 방법

인쇄 중 Date 객체를 직접 출력하면 기본 로케일에서 생성되는 형식이 그대로 나오는데, 이는 페이지에 필요한 형식이 아닌 경우가 많습니다. 출력 형식을 제어하는 ​​두 가지 방법이 있습니다.

첫 번째 방법은 논리를 유지합니다. Java 사용 SimpleDateFormat여기서 패턴의 각 문자는 값의 한 부분을 나타냅니다.

<%@ 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 %>
패턴 문자 의미 예시
yyyy 네 자리 연도 2026
MM 월 번호 07
dd 날짜 29
HH 시간, 24시간제 18
mm 회의록 45
ss 초 02

두 번째 접근 방식은 페이지에 아무것도 표시되지 않도록 합니다. Java 이 코드는 JSTL 포맷팅 라이브러리를 사용하는데, 이는 다른 코드와도 잘 어울립니다. 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 위에 표시된 값은 Jakarta EE 10 이상에서 사용되는 JSTL 3.0 형식입니다. 이전 버전의 컨테이너에서 실행되는 페이지는 여전히 다른 형식을 사용합니다. http://java.sun.com/jsp/jstl/fmt그리고 컨테이너는 호환성을 위해 이전 URI를 계속 허용합니다. type 속성 선택 date, time및 both반면 dateStyle, timeStyle timeZone 결과를 다듬으세요.

JSP에서 java.time API를 사용하여 날짜 처리하기

Java 8은 다음을 소개했습니다. java.time 이 패키지는 이제 모든 프로그램에서 날짜를 다루는 데 권장되는 방법입니다. Java JSP 페이지를 포함한 코드입니다. Date이러한 클래스는 불변이며 스레드 안전하므로 단일 포맷터를 여러 요청에서 안전하게 공유할 수 있습니다.

<%@ 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) %>

페이지에서 실제로 필요한 것과 일치하는 클래스를 선택하세요.

  • LocalDate — 시간이 포함되지 않은 날짜, 예를 들어 생년월일.
  • LocalTime — 날짜가 없는 시간, 예를 들어 영업 시작 시간.
  • LocalDateTime — 시간대가 포함되지 않은 날짜와 시간.
  • ZonedDateTime 예를 들어 특정 시간대에 맞춰진 날짜와 시간 ZoneId.of("Asia/Kolkata").
  • Instant — 기계 타임스탬프, 무엇과 가장 일치하는가 getTime() 보고.

기존 코드를 한 번에 다시 작성할 필요가 없는 이유는 다음과 같습니다. Date.from(instant) date.toInstant() 두 API 간 변환.

JSP에서 흔히 발생하는 날짜 처리 오류

개발자용 컴퓨터에서 날짜가 정확하게 출력되더라도 실제 운영 환경에서는 잘못 출력될 수 있습니다. 아래와 같은 오류가 이러한 오류 보고의 대부분을 차지합니다.

  • 누락된 가져오기: 사용 Date 없이 <%@ page import="java.util.*" %> 자격을 완전히 갖춘 사용자가 아니면 컴파일에 실패합니다. java.util.Date 이 페이지의 예시처럼 작성됩니다.
  • 잘못된 패턴의 글자: mm 몇 분입니다. MM 몇 개월이고, DD 월의 일수가 아니라 연중 일수입니다.
  • 서버 시간대: new Date() 서버 시간을 반영하는 것이지 방문자 시간을 반영하는 것이 아닙니다. 설정 timeZone 청중이 다른 곳에 있을 때 서식 태그를 사용합니다.
  • SimpleDateFormat 공유하기: 해당 클래스는 스레드로부터 안전하지 않으므로 요청 간에 공유되는 정적 인스턴스는 손상된 출력을 반환할 수 있습니다. 요청마다 하나씩 생성하거나, DateTimeFormatter.
  • 업그레이드 후 빈 페이지가 나타났습니다. 자카르타 EE 10의 컨테이너가 기존 컨테이너를 거부합니다. javax JSTL jar 파일이므로 Jakarta 관련 파일이 모두 준비될 때까지 서식 태그가 텍스트 그대로 표시됩니다.
  • 문자열 서식 지정: 요청 매개변수에서 가져온 값은 텍스트이므로 구문 분석해야 합니다. parse() 어떤 날짜 지정 방법도 이를 허용하기 전입니다.

자주 묻는 질문

java.util, 추가 <%@ page import="java.util.*" %> 페이지 상단에 적거나, 자격을 갖춘 사람의 이름을 모두 적으세요. java.util.Date 이 페이지의 예시처럼 표현식 태그 안에 넣는 것입니다.

AI 비서는 형식 패턴을 일반 영어로 번역하고, 오래된 형식을 변환할 수 있습니다. Date 스니펫을 java.time또한 공유 포맷터에서 스레드 안전성 문제를 지적합니다. 잘못된 패턴 문자를 사용해도 컴파일은 문제없이 되므로 제안된 내용을 테스트해 보세요.

예. GitHub 부조종사 주석에서 스크립틀릿과 태그 라이브러리 지시문을 완성합니다. JSTL을 확인하세요. uri 자주 이전 버전으로 기본 설정되기 때문에 오류가 발생합니다. java.sun.com 자카르타의 가치보다는 그 가치입니다.

new Date() 페이지를 실행하는 서버의 시계와 기본 시간대를 읽습니다. 방문자의 현지 시간이 중요한 경우 포맷터에 명시적인 시간대를 전달하거나 클라이언트에서 변환하십시오.

getTime() 를 반환 long: 1970년 1월 1일 이후 경과된 밀리초. toString() 기본 로케일을 기반으로 읽기 쉬운 문자열을 반환합니다. 숫자를 저장하고 문자열을 표시합니다.

아니요. 해당 클래스는 여전히 지원되지만, JDK 1.1 이후로 대부분의 필드 접근자에 사용 중단 경고가 표시되고 있습니다. 새로운 코드는 다른 방법을 사용해야 합니다. java.time예산 및 Date.from() 두 API를 연결합니다.

예. 객체를 다음과 같이 선언하세요. <jsp:useBean> 그리고 JSTL을 사용하여 렌더링합니다. <fmt:formatDate> 태그입니다. 스크립틀릿이 필요하지 않으므로 마크업이 읽기 쉽고 유지 관리가 간편합니다.

표현 태그 <%= %>그 안에 포함된 모든 내용은 평가되고 그 결과는 다음과 같습니다. toString() 결과는 응답에 기록되며, 샘플 페이지에서 날짜가 한 줄로 출력되는 방식입니다.

이 게시물을 요약하면 다음과 같습니다.