코딩 테스트/TIP

[JAVA] 날짜, 시간 계산 총 정리

갓생사는 김초원의 개발 블로그 2020. 11. 24. 01:26

1. 날짜 원하는 형식으로 출력하기 

// 날짜 초 소숫점까지 나타내기.
Date date = new Date();
SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS"); // 초 소숫점 세자리까지 나타내기 
System.out.println(simpleDateFormat1.format(date));

SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyy-MM-dd hh:mm");
System.out.println(simpleDateFormat2.format(date));
        

//
2020-11-24 01:12:55.219
2020-11-24 01:12

 

2. 문자열을 Date객체로 형변환하기

// 문자열을 Date객체로 형변환하기
String dateStr = "2016-09-15 01:00:04.002";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS");
Date date = simpleDateFormat.parse(dateStr);
System.out.println(date);

//
Thu Sep 15 01:00:04 KST 2016

 

3. 시간 초 소숫점자리 연산 

- 더하기 

// 시간 초 소숫점 자리까지 더하기, 빼기
        String dateStr = "2016-09-15 01:00:04.002";
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS");
        double second = 2.000; // 2초

        Date date = simpleDateFormat.parse(dateStr);
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.add(Calendar.SECOND, (int) second);
        System.out.println(simpleDateFormat.format(cal.getTime()));

        // 초가 소숫점 3자리까지 있는 경우
        second = 1.345;
        // Calendar.MILLISECOND 사용, 초에 1000을 곱함
        cal.add(Calendar.MILLISECOND, (int)(second * 1000));
        System.out.println(simpleDateFormat.format(cal.getTime()));
        
//
2016-09-15 01:00:06.002
2016-09-15 01:00:07.347

 

- 빼기

 // 시간 초 소숫점 자리까지 더하기, 빼기
        String dateStr = "2016-09-15 01:00:04.002";
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS");
        double second = 2.000; // 2초

        Date date = simpleDateFormat.parse(dateStr);
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.add(Calendar.SECOND, (int) -second);
        System.out.println(simpleDateFormat.format(cal.getTime()));

        // 초가 소숫점 3자리까지 있는 경우
        second = 1.345;
        // Calendar.MILLISECOND 사용, 초에 1000을 곱함
        cal.add(Calendar.MILLISECOND, (int)(-second * 1000));
        System.out.println(simpleDateFormat.format(cal.getTime()));
        
//
2016-09-15 01:00:02.002
2016-09-15 01:00:00.657