티스토리 뷰

ALL/Java

Java 현재 시간 구하기 코드

whoAmI_ 2022. 11. 27. 15:29

 

System.currentTimeMillis()   vs   new Date()   vs   Calendar.getInstance().getTime()

 

Java에서는 위의 3가지 코드를 통해 time을 얻을 수 있다.

 

대표적으로 3가지가 주로 사용되고 있죠. Date객체를 사용하는 방법, Calendar클래스의 getInstance() 메서드를 활용하는 방법, System클래스의 currentTimeMillis() 메서드를 활용하는 방법

 

기존의 단점들을 개선한 java.time패키지(JDK1.8)

Calendar는 추상클래스이기 때문에 직접 객체를 생성할 수 없고, 메서드를 통해서 완전히 구현된 클래스의 인스턴스를 얻어야 한다.

Calendar cal = Calendar.getInstance();

getInstance() 는 태국을 제외하고 그레고리력에 맞게 구현된 인스턴스를 반환받을수 있다.

 

 

import java.awt.*;
import java.util.Calendar;
import java.util.Date;

public class GetTime {
    public static void main(String[] args) {
        System.out.println(System.currentTimeMillis());
        System.out.println(new Date());
        System.out.println(Calendar.getInstance().getTime());
    }
}

 

1578638707421
Sun Nov 27 15:45:07 KST 2022
Sun Nov 27 15:45:07 KST 2022

 

currentTimeMillis()는 timestamp를 반환해주고 나머지는 실제 날짜, 시간을 반환해준다.

 

 

 

결론적으로는 System.currentTimeMillis() 가 가장 빠르고 new Date()가 그 뒤를 따르지만 사실 이 둘은 같다고 해도 무방할 듯 하다.

 

눈여겨 볼 점은 Calendar.getInstance().getTime()는 객체 생성부터 시작하여 여러 상황을 고려한 (윤달 등등) 날을 계산하기에 많은 시간이 걸리는 듯 하다.

 

 System.currentTimeMillis() >= new Date() >>> Calendar.getInstance().getTime()

 

 

 

System.currentTimeMillis()는 객체를 만들지 않기 때문에 분명히 가장 효율적이지만

new Date() 객체 생성을 하지만 많은 과정이 없기에 System.currentTimeMillis()와 비슷한 성능을 낸다.

 

하지만 결국 Date는 객체 생성을 하기에 성능을 따지자면 GC를 하지 않는 System.currentTimeMillis() 더 나아 보인다.

 

반면, 캘린더는 날짜와 시간에 고유 한 상당히 복잡한 모든 기이 (윤년, 일광 절약 시간, 시간대 등)를 처리해야하기 때문에 상대적으로 느리고 매우 복잡하다.

 

'ALL > Java' 카테고리의 다른 글

Memory Analyzer(MAT) 툴 이용 Heap Dump 분석  (0) 2023.11.29
[Java] Socket 소켓통신 / Endian(빅엔디안, 리틀엔디안)  (1) 2023.11.27
[Java] Thread  (0) 2023.11.27
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함