자바(Java)/JAVA 2EE

날짜와 시간 처리 방법

본클라쓰 2010. 1. 4. 16:00

날짜와 시간 처리 방법

 

날짜와 시간을 저장하는 구조체는 컴퓨터에서 데이터를 처리할 때 필수적이다. 날짜와 시간은 컴퓨터에 있는 파일 보호나 관리에 필요할 뿐 아니라 현재 시간을 알 수 있게한다. 따라서 날짜와 시간은 매우 많은 부분에서 사용되어 진다.

 

자바에서는 날짜를 다루는 클래스로 java.util.Date 클래스와 Date 클래스를 상속받아 구현한 java.sql.Time, java.sql.Timestamp 클래스 이 세개가 자바에서의 날짜를 다루는 클래스이다.

 

데이터 베이스에서 날짜를 다루는 필드 속성에는 Date와 Timestamp 가 있다. Date 속성은 자동으로 필드를 채워주는 기능이 없다. 즉, 데이터베이스에 데이터를 삽입하거나 수정할 때 Date 필드는 사용자가 직접 데이터를 입력하거나 수정해야 한다. 하지만 Timestamp 속성은 자동으로 필드에 현재 시간을 채워주는 기능이 있다. 따라서 사용자가 Timestamp 필드를 생략한 채 데이터를 삽입하거나 수정하면 자동으로 현재 시간을 Timestamp 필드에 기록한다. Date 속성과 Timestamp 속성은 이런 차이점을 가지고 있다.

 

 

 

 

Date 클래스 생성 방법

 

SimpleDateFormat 클래스를 활용하여 날짜를 지정하여 생성할 수 있다. 아래 코드는 SimpleDateFormat 클래스를 사용하여 Date 객체에 날짜를 지정하는 방법이다.  

 

String textDate = "2009-01-01";

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

Date date = format.parse( textDate );

 

SimpleDateFormat 클래스를 사용하면 Date 객체를 텍스트 형태의 날짜로 표현할 수도 있다. 이 방법은 자바 클래스 설명에 있다.

 

 

또한, 직접 new 연산자를 사용하여 Date 객체를 생성할 수 있다. 아래 코드는 직접 new 연산자를 사용하여 Date 객체를 생성하는 코드이다.

 

Data date = new Date(2000, 10, 10);

 

이 때 주의할 점은 객체를 생성할 때 년도는 1900년도를 기준으로 생성한다. 위와 같이 new Date(2000, 10, 10) 로 생성했다면 Date 객체의 실제 년도는 3900 년 10월 10일이 된다. 또한, 자바에서는 new 연산자를 사용하여 Date 객체를 생성하는 것을 자제시키고 있다. 즉, 날짜 포멧을 갖춘 Date 객체를 사용하는 것을 추천한다.

 

 

 

 

java.util.Date 객체를 java.sql.Date 객체로 변경하는 방법

String textDate = request.getParameter("year")+request.getParameter("month")+request.getParameter("day");
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
java.util.Date commitUtilDate = format.parse(textDate);
   
long timeLongValue = commitUtilDate.getTime();
java.sql.Date commitSqlDate = new Date(timeLongValue);

 

  

java.sql.Date 객체를 문자열로 년,월,일로 다시 나누는 방법

java.sql.Date date = new Date ( longTimeValue );

 

String year = stringDate.substring(0, 4);
String month = stringDate.substring(5, 7);
String day = stringDate.substring(8, 10);

 

 

 

 

 

Timestamp 객체의 날짜 표현 방법 변경하기

 

날짜 포멧 변경은 SimpleDateFormat 클래스를 사용하여 변경한다. SimpleDateFormat 클래스는 텍스트에서 Date 객체로 Date 객체에서 텍스트로 변경할 수 있으며 날짜 패턴을 지정할 수 있다.

 

Timestamp stamp = new Timestamp( System.currentTimeMills() );

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

 

format.format( stamp ); 

 

 

또한, Timestamp 값을 JSTL 를 사용하여 표현 방법을 변경할 수도 있다. JSTL 태그를 사용한 포멧 변경 방법이다.

 

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>

 

<fmt:formatDate value="${vo.date}" type="both" pattern="yyyy-MM-dd"/>