서블릿 처리 날짜


서블릿 사용의 가장 중요한 장점 중 하나는 핵심 Java에서 사용 가능한 대부분의 메소드를 사용할 수 있다는 것입니다. 이번 장에서는 Java에서 제공하는 java.util 패키지의 Date 클래스에 대해 설명합니다. 이 클래스는 현재 날짜와 시간을 캡슐화합니다.

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

Date( )

아래 생성자는 1970년 1월 1일 자정 이후 경과된 밀리초 수와 동일한 매개 변수를 허용합니다.

Date(long millisec)

Date 객체를 사용할 수 있게 되면 지원되는 다음 메서드 중 하나를 호출하여 날짜를 사용할 수 있습니다.

일련번호방법 및 설명
1
序号方法 & 描述
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)
设置 time 指定的时间和日期,这表示从 1970 年 1 月 1 日午夜以来经过的时间(以毫秒为单位)。
10String toString( )
转换调用的 Date 对象为一个字符串,并返回结果。
boolean after(Date date)<🎜>
호출된 Date 객체에 포함된 날짜가 date가 지정한 날짜보다 이후이면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
2<🎜>boolean before(Date date)<🎜>
호출된 Date 객체에 포함된 날짜가 날짜 이전의 날짜인 경우 true를 반환하고, 그렇지 않은 경우 false를 반환합니다.
3<🎜>Object clone( )<🎜>
Date 객체를 반복적으로 호출합니다.
4<🎜>int CompareTo(Date date)<🎜>
호출 객체의 값과 date의 값을 비교합니다. . 두 값이 동일하면 0이 반환됩니다. 호출 객체가 날짜보다 앞선 경우 음수 값이 반환됩니다. 호출 객체가 날짜 이후에 오면 양수 값이 반환됩니다.
5<🎜>int CompareTo(Object obj)<🎜>
obj가 Date 클래스인 경우 작업은 다음과 동일합니다. 비교 대상(날짜). 그렇지 않으면 ClassCastException이 발생합니다.
6<🎜>boolean equals(Object date)<🎜>
호출된 Date 객체에 포함된 시간과 날짜가 지정된 날짜가 동일하면 true가 반환되고, 그렇지 않으면 false가 반환됩니다.
7<🎜>long getTime( )<🎜>
1970년 1월 1일 이후 경과된 밀리초 수를 반환합니다.
8<🎜>int hashCode( )<🎜>
호출 객체에 대한 해시 코드를 반환합니다.
9<🎜>void setTime(long time)<🎜>
시간을 지정된 시간과 날짜로 설정합니다. 즉, 1970 년 1월 1일 자정 이후 경과된 시간(밀리초)입니다.
10<🎜>String toString( )<🎜>
호출된 Date 객체를 문자열로 변환하고 결과를 반환합니다.

현재 날짜 및 시간 가져오기

Java Servlet에서 현재 날짜 및 시간을 가져오는 것은 매우 쉽습니다. 간단한 Date 객체의 toString() 메소드를 사용하여 현재 날짜와 시간을 다음과 같이 출력할 수 있습니다.

// 导入必需的 java 库
import java.io.*;
import java.util.Date;
import javax.servlet.*;
import javax.servlet.http.*;
 
// 扩展 HttpServlet 类
public class CurrentDate extends HttpServlet {
 
  public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
            throws ServletException, IOException
  {
      // 设置响应内容类型
      response.setContentType("text/html");
 
      PrintWriter out = response.getWriter();
      String title = "显示当前的日期和时间";
      Date date = new Date();
      String docType =
      "<!doctype html public \"-//w3c//dtd html 4.0 " +
      "transitional//en\">\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>");
  }
}

이제 위의 서블릿을 컴파일하고 실행해 보겠습니다. web.xml 파일을 만들고 http://localhost:8080/CurrentDate에 액세스하여 서블릿을 호출합니다. 그러면 다음과 같은 결과가 생성됩니다.

현재 날짜 및 시간 표시

월 6월 21일 21:46:49 GMT+04:00 2010

显示当前的日期和时间

Mon Jun 21 21:46:49 GMT+04:00 2010

URL http://localhost:8080/CurrentDate를 새로 고치면 몇 초마다 표시되는 시간의 차이를 확인할 수 있습니다.

날짜 비교

위에서 언급했듯이 Servlet에서는 사용 가능한 모든 Java 메소드를 사용할 수 있습니다. 두 날짜를 비교해야 하는 경우 방법은 다음과 같습니다.

  • getTime()을 사용하여 두 개체 단위 모두에 대해 1970년 1월 1일 자정 이후 경과 시간(밀리초)을 가져올 수 있습니다. 그런 다음 두 값을 비교합니다.

  • before( ), after( ), equals( ) 메소드를 사용할 수 있습니다. 예를 들어 12일이 18일 이전이므로 new Date(99, 2, 12).before(new Date (99, 2, 18))는 true를 반환합니다.

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

SimpleDateFormat을 사용하여 날짜 형식 지정

SimpleDateFormat은 로케일을 구분하는 방식으로 날짜 형식을 지정하고 구문 분석하기 위한 구체적인 클래스입니다. SimpleDateFormat을 사용하면 사용자 정의 날짜-시간 형식 모드를 선택할 수 있습니다.

위 인스턴스를 다음과 같이 수정해 보겠습니다.

// 导入必需的 java 库
import java.io.*;
import java.text.*;
import java.util.Date;
import javax.servlet.*;
import javax.servlet.http.*;
 
// 扩展 HttpServlet 类
public class CurrentDate extends HttpServlet {
 
  public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
            throws ServletException, IOException
  {
      // 设置响应内容类型
      response.setContentType("text/html");
 
      PrintWriter out = response.getWriter();
      String title = "显示当前的日期和时间";
      Date dNow = new Date( );
      SimpleDateFormat ft = 
      new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz");
      String docType =
      "<!doctype html public \"-//w3c//dtd html 4.0 " +
      "transitional//en\">\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>");
  }
}

위 서블릿을 다시 컴파일한 후 http://localhost:8080/CurrentDate에 액세스하여 서블릿을 호출합니다. 그러면 다음과 같은 결과가 생성됩니다.

현재 날짜 및 시간 표시

Mon 2010.06.21 at 10:06:44 PM GMT+ 04:00

显示当前的日期和时间

Mon 2010.06.21 at 10:06:44 PM GMT+04:00


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

이벤트 패턴 문자열을 사용하여 시간 형식을 지정합니다. 이 모드에서는 모든 ASCII 문자가 다음과 같이 정의된 모드 문자로 예약됩니다.

字符描述实例
GEra 指示器AD
y四位数表示的年2001
M一年中的月July 或 07
d一月中的第几天10
h带有 A.M./P.M. 的小时(1~12)12
H一天中的第几小时(0~23)22
m一小时中的第几分30
s一分中的第几秒55
S毫秒234
E一周中的星期几Tuesday
D一年中的第几天360
F所在的周是这个月的第几周2 (second Wed. in July)
w一年中的第几周40
W一月中的第几周1
aA.M./P.M. 标记PM
k一天中的第几小时(1~24)24
K带有 A.M./P.M. 的小时(0~11)10
z时区Eastern Standard Time
'Escape for textDelimiter
"单引号`

날짜 작업에 사용 가능한 방법의 전체 목록을 보려면 표준 Java 설명서를 참조하세요.