English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Servlet 날짜 처리

Servlet의 가장 중요한 장점 중 하나는, 핵심 Java에서 사용할 수 있는 대부분의 메서드를 사용할 수 있다는 것입니다. 이 장은 Java가 제공하는 java.util 패키지 Date 클래스로, 이 클래스는 현재 날짜와 시간을 포장합니다.

Date 클래스는 두 개의 생성자를 지원합니다. 첫 번째 생성자는 현재 날짜와 시간의 객체를 초기화합니다.

Date( )

다음 생성자는 매개변수를 받아 이는 1970 년 1 월 1 일 밤 중간부터 경과한 밀리초 수

Date(long millisec)

Date 객체가 사용 가능하다면, 다음 중 어느 메서드든 호출하여 날짜를 사용할 수 있습니다:

순번메서드 & 설명
1boolean after(Date date)
호출된 Date 객체에 포함된 날짜가 date로 지정된 날짜보다 뒤이면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
2boolean before(Date date)
호출된 Date 객체에 포함된 날짜가 date로 지정된 날짜보다 이전이면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
3Object clone()
Date 객체를 반복 호출합니다.
4int compareTo(Date date)
호출된 객체의 값을 date의 값과 비교합니다. 두 값이 같으면 0을 반환합니다. 호출된 객체가 date보다 앞서면 음수를 반환하고, 호출된 객체가 date보다 뒤면 양수를 반환합니다.
5int compareTo(Object obj)
obj이 Date 클래스이면, compareTo(Date)와 동일한 작업을 수행합니다. 그렇지 않으면 ClassCastException이 발생합니다.
6boolean equals(Object date)
호출된 Date 객체에 포함된 시간과 날짜가 date로 지정된 것과 동일하면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
7long getTime()
반환 1970 년 1 월 1 일부터 경과한 밀리초 수
8int hashCode()
호출된 객체에 대해 해시 코드를 반환합니다.
9void setTime(long time)
지정된 시간과 날짜를 설정하여 이는 1970 년 1 월 1 일 밤 중간부터 경과한 시간(밀리초로)
10String toString()
호출된 Date 객체를 문자열로 변환하여 결과를 반환합니다.

현재의 날짜와 시간을 얻는 것

Java Servlet에서 현재의 날짜와 시간을 얻는 것은 매우 쉽습니다. 단순한 Date 객체의 toString() 현재 날짜와 시간을 출력하는 메서드를 다음과 같이 작성할 수 있습니다:

package com.w;3codebox.test;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * Servlet implementation class CurrentDate
 */
@WebServlet("/CurrentDate")
public class CurrentDate extends HttpServlet {
    private static final long serialVersionUID = 1L;
   
    public CurrentDate() {
        super();
    }
    
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
          String title = "显示当前的日期和时间";
        Date date = new Date();
        String docType = "<!DOCTYPE html> \n";
          out.println(docType +
            "<html>\n" +
            "<head><title>" + title + "</title></head>\n" +
            "<body bgcolor="#f0f0f0">\n" +
            "<h1 align="center">" + title + "</h1>\n" +
            "<h2 align="center">" + date.toString() + "</h2>\n" +
            "</body></html>
    }
}

이제, 위의 Servlet을 컴파일하고 web.xml 파일에서 적절한 항목을 생성해 보겠습니다:

<?xml version="1.0" encoding="UTF-8"?>
<web-app>
  <servlet>
    <servlet-name>CurrentDate</servlet-name>
    <servlet-class>com.w3codebox.test.CurrentDate</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>CurrentDate</servlet-name>
    <url-pattern>/TomcatTest/CurrentDate</url-pattern>
  </servlet-mapping>
</web-app>

그런 다음 http://localhost:8080/TomcatTest/CurrentDate를 호출하여 Servlet을 호출하면 다음과 같은 결과가 생성됩니다:

URL을 새로 고침하려면 http://localhost:8080/TomcatTest/CurrentDate를 매끄럽게 갱신하면 매 번 표시된 시간 차이를 발견할 수 있습니다.

날짜 비교

위에서 언급한 것처럼 Servlet에서 모든 사용 가능한 Java 메서드를 사용할 수 있습니다. 두 개의 날짜를 비교해야 한다면 다음과 같은 메서드가 있습니다:

  • getTime()를 사용하여 두 개의 객체가 1970 년 1 월 1 일 중반까지 경과한 시간(밀리초로 표현), 그런 다음 두 가지 값을 비교합니다.

  • before()、after() 및 equals() 메서드를 사용할 수 있습니다. 한 달 동안 12 號에 있음,예를 들어,new Date( 18 號之前,例如,new Date(99, 2, 12).before(new Date(99, 2, 18)) 반환 true.

  • Comparable 인터페이스에서 정의된 compareTo() 메서드를 사용할 수 있습니다. 이 메서드는 Date에서 구현됩니다.

SimpleDateFormat으로 날짜 포맷화

SimpleDateFormat은 언어 환경에 민감하게 날짜를 포맷화하고 분석하는 특정 클래스입니다. SimpleDateFormat은 사용자 정의된 날짜 시간 포맷화 패턴을 선택할 수 있습니다.

让我们修改上面的示例,如下所示:

package com.w;3codebox.test;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * Servlet implementation class CurrentDate
 */
@WebServlet("/CurrentDate")
public class CurrentDate extends HttpServlet {
    private static final long serialVersionUID = 1L;
   
    public CurrentDate() {
        super();
    }
    
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        
        PrintWriter out = response.getWriter();
        String title = "显示当前的日期和时间";
        Date dNow = new Date( );
        SimpleDateFormat ft = 
                new SimpleDateFormat ("yyyy.MM.dd  hh:mm:ss E a ");
        String docType = "<!DOCTYPE html> \n";
        out.println(docType +
            "<html>\n" +
            "<head><title>" + title + "</title></head>\n" +
            "<body bgcolor="#f0f0f0">\n" +
            "<h1 align="center">" + title + "</h1>\n" +
            "<h2 align="center">" + ft.format(dNow) + "</h2>\n" +
            "</body></html>
    }
}

위의 Servlet을 다시 컴파일한 후 http:을 통해 접근하면//localhost:8080/TomcatTest/CurrentDate를 호출하여 Servlet을 호출하면 다음과 같은 결과가 생성됩니다:

간단한 날짜 형식의 형식 코드

이벤트 모드 문자열을 사용하여 시간 형식을 지정합니다. 이 모드에서 모든 ASCII 문자는 모드 문자로 유지됩니다. 이 문자들은 다음과 같이 정의됩니다:

문자설명예제
G시대 지시자AD
y4자리 연도 표시2001
M1년 중 몇 월July 또는 07
d1월 중 몇 일10
hA.M. 포함/P.M. 시간(1~12)12
H하루 중 몇 시간(0~23)22
m1시간 중 몇 분30
s1분 중 몇 초55
S밀리초234
E주 중 몇曜일Tuesday
D1년 중 몇 일360
F의 주는 이 달의 몇 주인가요2 (7월의 두 번째 월요일)
w1년 중 몇 주40
W1월 중 몇 주1
aA.M./P.M. 표시PM
k하루 중 몇 시간(1~24)24
KA.M. 포함/P.M. 시간(0~11)10
z시간대Eastern Standard Time
'텍스트 escape구분자
"단 quotes`

사용할 수 있는 처리 날짜 메서드의 전체 목록을 확인하려면, 표준 Java 문서를 참조하십시오.