JSP 현재 날짜 및 시간
⚡ 스마트 요약
JSP의 날짜 처리는 기본 코어에 의존합니다. Java따라서 java.util.Date 클래스와 해당 생성자는 스크립틀릿이나 표현식 태그에서 직접 호출하여 현재 날짜와 시간을 페이지에 출력할 수 있습니다.
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에서 날짜와 시간을 형식화하는 방법
인쇄 중 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의 컨테이너가 기존 컨테이너를 거부합니다.
javaxJSTL jar 파일이므로 Jakarta 관련 파일이 모두 준비될 때까지 서식 태그가 텍스트 그대로 표시됩니다. - 문자열 서식 지정: 요청 매개변수에서 가져온 값은 텍스트이므로 구문 분석해야 합니다.
parse()어떤 날짜 지정 방법도 이를 허용하기 전입니다.

