JSP

지시어 태그 - 페이지 태그와 날짜, 시간 클래스 (Date, SimpleDateFormat, Timestamp, Calendar)

Kiwisae 2022. 8. 25. 11:43

jsp 파일을 생성하면 항상 최상단에 다음과 같은 페이지의 속성을 나타내는 태그가 삽입되어 있다.

 

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

 

html의 <meta charset="UTF-8"> 태그와 마찬가지로 이 페이지 태그가 빠지면

한글이 모두 깨져서 나온다.

 

 

 

 

import 문은 자바를 사용할때와 마찬가지로 클래스 명을 입력후 Shift + Space 를 누르면 

목록이 뜨면서 선택할 수 있게 된다.

선택하면 최상단에 import문이 자동으로 생성된다.

 

 

 

 

 

import 문을 최상단에 사용하지 않을 때

 

java.util.Date d = new java.util.Date();

 

매우 비효율적이고 코드가 길어진다.

 

 

 

Date를 입력하고 Shift + Space 만 누르면 선택 가능한 클래스들이 나온다.

올바른 클래스를 선택하면 최상단에 바로 import 문이 자동 생성된다.

 

 

 

 

 

import 문을 최상단에 사용할 때

 

이 때, import 문은 페이지 최상단의 속성 태그 아래에 위치해야 한다.

그렇지 않으면 브라우저에 출력했을 때 아무것도 정보가 나오지 않는다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@page import="java.util.Date"%>

<%
	Date d = new Date();
%>

현재시간1 : <%= d %> <br>

 

 

 

 

그렇지만 내가 보기에 편한 포맷은 아니다.

 

이럴 땐 SimpleDateFormat 클래스를 이용한다.

마찬가지로 import 해야 한다.

 

SimpleDateFormat  클래스를 불러오는 객체 안에 내가 보고 싶은 형식을 지정한다.

 

 

<%@page import="java.text.SimpleDateFormat"%>
<%@page import="java.util.Date"%>

<%
	Date d = new Date();
	SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss EEE요일");
%>

현재시간1 : <%= d %> <br>
현재시간2 : <%= sd.format(d) %>

 

 

 

 

Timestamp로 현재 시스템의 날짜,시간 정보를 구해온다.

기본 생성자는 없기 때문에 (); 로 처리하면 오류가 난다.

 

<%@page import="java.sql.Timestamp"%>

<%
	Timestamp ts = new Timestamp(System.currentTimeMillis());
%>
현재시간3 : <%= ts %>

 

 

여기에서 SimpleDateFormat 클래스를 적용 가능하여 보기 편한 형식으로 출력 할 수 있다.

 

현재시간4 : <%= sd.format(ts) %>

 

 

 

 

 

Calendar 클래스를 살펴본다.

이 클래스는 new 연산자로 생성하지 않는다.

클래스 내의 정적 메소드 getInstance를 통해 불러온다.

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@page import="java.util.Calendar"%>

<%
	Calendar c = Calendar.getInstance();

	int y = c.get(Calendar.YEAR);
	int m = c.get(Calendar.MONTH)+1;	// Month는 0~11 범위 내에서 출력되므로 꼭 +1을 붙여준다
	int d = c.get(Calendar.DATE);
%>

<%= y %>-<%= m %>-<%= d %>

 

 

 

 

12시간제로 표시할 때,

오전과 오후를 구해주는 필드 AM_PM 은 오전일 경우 0을 반환하고 오후일 경우 1을 반환한다.

그래서 조건문을 사용해 사용자가 알아보기 쉬운 문자로 반환한다.

 

	int h1 = c.get(Calendar.HOUR);			//12시간제
	int h2 = c.get(Calendar.HOUR_OF_DAY);	//24시간제
	
	String h = "";
	if(c.get(Calendar.AM_PM) == 0) {
		h = "오전";
	} else {
		h = "오후";
	}

 

 

12시간제 : <%= y %>-<%= m %>-<%= d %> <%= h %> <%= h1 %> <br>
24시간제 : <%= y %>-<%= m %>-<%= d %> <%= h %> <%= h2 %>

 

 

 

분, 초의 값도 구해본다.

 

 

 

	int mm = c.get(Calendar.MINUTE);
	int s = c.get(Calendar.SECOND);
    
    
12시간제 : <%= y %>-<%= m %>-<%= d %> <%= h %> <%= h1 %>:<%= mm %>:<%= s %><br>
24시간제 : <%= y %>-<%= m %>-<%= d %> <%= h2 %>:<%= mm %>:<%= s %>

 

 

 

 

 

 

 

 

이제 요일을 구해보는데, 숫자로 출력되기 때문에

사용자가 보기 편한 형식으로 보기 위해서 배열을 사용한다.

 

DAY_OF_WEEK는 1~7 사이의 값을 반환하는데, (1 : 일요일 ~ 7 : 토요일)

배열의 인덱스는 0부터 시작된다는 점을 잘 기억해야 한다.

0번 값을 비워두고 시작하거나 출력시 연산을 한다.

 

	int week = c.get(Calendar.DAY_OF_WEEK);	
	String[] weekend = {"일", "월", "화", "수", "목", "금", "토"	};
    
12시간제 : <%= y %>-<%= m %>-<%= d %> <%= h %> <%= h1 %>:<%= mm %>:<%= s %>
		<%= weekend[week-1] %>요일<br>
24시간제 : <%= y %>-<%= m %>-<%= d %> <%= h2 %>:<%= mm %>:<%= s %>
		<%= weekend[week-1] %>요일