본문 바로가기
Spring/Spring Boot

[SpringBoot] TimeZone 설정 후 출력하기

by dbjh 2021. 2. 3.
반응형

현재 사용자들에게 서비스하고 있는 프로젝트가 있다고 치자,  이 프로젝트를 다른 국가에 런칭해야 하는 상황 이라면?  당연히 현지에 있는 시간에 맞춰서 사용자에게 시간을 제공해줘야한다. 이럴 때, 사용하는것이 TimeZone 설정이다.  이번 글에서는 스프링부트에서 타임존을 어떻게 설정하고 어떤식으로 출력해서 사용하는지 알아보도록하자.

 

1. TestCode로 확인하기

우선 테스트케이스에서 타임존설정을 해서 국제표준시간과 한국시간을 출력해서 설정해 따라 결과가 달라지는 것을 보도록하자.

@RunWith(SpringRunner.class)
@SpringBootTest
public class TimeZoneTest {

    @Test
    public void queryFilterForActionLogBotTest() {
        TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
        System.out.println("** 국제 표준 시간 **");
        System.out.println(new Date().toString());

        TimeZone.setDefault(TimeZone.getTimeZone("Asia/Seoul"));
        System.out.println("** 한국 시간 **");
        System.out.println(new Date().toString());
        
        // LocalDateTime.now().toString()으로도 출력가능 - 출력형식이 다름

    }

}

위처럼 TimeZone을 세팅할 수 있는데, TimeZone.getTimeZone() 메소드에 알맞은 문자열 파라미터를 넣어주면 각 파라미터에 맞게 TimeZone 객체를 리턴해준다. 그러면 다시 TimeZone.setDefault() 메소드에 해당 객체를 넣어서 설정해주는 것이다.  결과를 확인해보도록하자.

설정된 시간에 따라 다른결과

 

2. 프로젝트에 적용하기

TimeZone은 설정은 지역에 맞게 설정하여 사용하면 되지만, 여기서는 기본적으로 한국시간을 설정해서 프로젝트에서 이용하는 법만 알아보도록하자.

@SpringBootApplication
public class TimeZoneApplication {

    @PostConstruct
    void started() {
        TimeZone.setDefault(TimeZone.getTimeZone("Asia/Seoul"));
    }

    public static void main(String[] args) {
        SpringApplication application = new SpringApplication(ApiApplication.class);
        application.setLogStartupInfo(false);
        application.run(args);
    }
}

위처럼 @PostConstruct 어노테이션을 사용해서 TimeZone설정이 자동으로 이루어지도록해보자. 위에서는 @SpringBootApplication이 명시된 클래스에 선언하였지만, 실질적으로는 시간 or 지역관련 클래스에 선언하는게 관리상 좋을것이다.

위처럼 설정하였다면, 1번 과정의 TestCase 처럼 Date객체를 이용하도록하자.

// 날짜 및 시간 출력
System.out.println(new Date().toString());
System.out.println(LocalDateTime.now().toString());

 

SpringBoot TimeZone 설정 및 사용하기 끝.

반응형

댓글