Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java에서 밀리초 값을 날짜와 시간으로 변환하는 방법

Java에서 밀리초(millisecond) 값은 1970년 1월 1일 00:00:00 UTC(에포크 시간)부터 경과한 시간을 숫자로 표현한 것입니다. 이러한 밀리초 값을 사람이 읽기 쉬운 날짜·시간 형식으로 변환하려면 java.text.SimpleDateFormat 클래스를 활용할 수 있습니다.

SimpleDateFormat 클래스란?

SimpleDateFormat은 문자열을 날짜(Date) 객체로 파싱하거나, 날짜 객체를 지정한 형식의 문자열로 포맷팅하는 데 사용되는 클래스입니다. 이 클래스의 생성자 중 하나는 원하는 날짜 형식을 나타내는 문자열을 인자로 받아 SimpleDateFormat 객체를 생성합니다.

밀리초를 날짜로 변환하는 절차

  • "dd MMM yyyy HH:mm:ss:SSS Z" 형태의 포맷 문자열을 준비합니다. 이때 SSS는 밀리초를 의미합니다.
  • Date 클래스의 생성자에 밀리초 값을 담은 long 타입 변수를 전달하여 Date 객체를 생성합니다.
  • 마지막으로 format() 메서드를 사용해 Date 객체를 지정된 형식의 문자열로 변환합니다.

예제 1: 특정 밀리초 값을 날짜로 변환하기

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Sample {
   public static void main(String args[]) throws ParseException {
      long msec = 3550154;
      // SimpleDateFormat 클래스 인스턴스 생성
      SimpleDateFormat dateformatter = new SimpleDateFormat("dd MMM yyyy HH:mm:ss:SSS Z");
      // 밀리초 값으로 Date 객체 생성
      Date date = new Date(msec);
      System.out.println("Date value: " + dateformatter.format(date));
   }
}

위 코드는 에포크 시간으로부터 3,550,154밀리초가 지난 시점을 지정한 형식으로 출력합니다.

출력 결과

Date value: 01 Jan 1970 06:29:10:154 +0530

예제 2: Calendar로 현재 시간의 밀리초 구하기

Calendar 클래스의 getTimeInMillis() 메서드를 사용하면 현재 시간을 밀리초 단위로 손쉽게 구할 수 있습니다. 이 값을 다시 Date 객체로 변환하면 현재 날짜와 시간을 확인할 수 있습니다.

import java.util.Calendar;
import java.util.Date;

public class Sample {
   public static void main(String args[]) {
      Calendar calendar = Calendar.getInstance();
      long msec = calendar.getTimeInMillis();
      Date obj = new Date(msec);
      System.out.println(obj);
   }
}

출력 결과

Wed Nov 11 22:04:59 IST 2020

참고: Java 8 이상에서는 java.time API 권장

Java 8부터 제공되는 java.time 패키지를 사용하면 더 간결하고 스레드 안전하게 처리할 수 있습니다. 예를 들어 Instant.ofEpochMilli(msec) 메서드를 호출하면 밀리초 값을 Instant 객체로 바로 변환할 수 있으며, DateTimeFormatter를 활용해 원하는 형식으로 출력할 수 있습니다. 레거시 코드 호환성이 필요하지 않다면 새 프로젝트에서는 java.time API 사용을 권장합니다.