코딩 테스트/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