Obsidian/Recognition/Programing/Java/Java 날짜 관련.md

142 lines
5.2 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

#Java
- 형변환
```java
// 1. Calendar To Date
Calendar calendar = Calendar.getInstance(); // 추상 클레스이므로 new로 생성 불
Date date = new Date(clendar.getTimeInMillis());
// 2. Date to Calendar
Date date = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
// 3. String to Date
SimpleDateFormat simple_format = new SimpleDateFormat("yyyy.MM.dd HH:mm");
String timeString = "2021.07.14 23:39";
Date date = null;
try{
date = simple_format.parse(timeString);
} catch (ParseException e) {
e.printStackTrace();
}
// 4. String to Calendar
// String -> Date -> 2번(Date to Calendar) 순
SimpleDateFormat simple_format = new SimpleDateFormat("yyyy.MM.dd HH:mm");
String timeString = "2021.07.14 23:39";
Date date = null;
try{
date = simple_format.parse(timeString);
} catch (ParseException e) {
e.printStackTrace();
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
// Calendar to String
Date kstDate = new Date(cal.getTimeInMillis());
String strInTmKst = simple_format.format(kstDate);
```
- Calendar 일시 가공
```java
// 현재 시간에 연산
Calendar cal1 = Calendar.getInstance();
cal1.add(Calendar.DATE, 6); // 일 계산
cal1.add(Calendar.MONTH, 4); // 월 연산
cal1.add(Calendar.DATE, -3); // 빼고 싶다면 음수 입력
Date date = new Date(cal1.getTimeInMillis());
System.out.println("현재시간 : " + new Date());
System.out.println("연산시간 : " + date);
// 특정 시간에 연산
String date_str = "2021-03-01 11:11:11";
SimpleDateFormat transFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = transFormat.parse(date_str);
Calendar cal1 = Calendar.getInstance();
cal1.setTime(date); // 시간 설정
cal1.add(Calendar.YEAR, 2); // 년 연산
cal1.add(Calendar.MONTH, 4); // 월 연산
cal1.add(Calendar.DATE, 4); // 일 연산
cal1.add(Calendar.HOUR_OF_DAY , 4); // 시간 연산
cal1.add(Calendar.MINUTE, 5); // 분 연산
cal1.add(Calendar.SECOND, 12); // 초 연산
System.out.println("설정시간 : " + date);
System.out.println("연산시간 : " + new Date(cal1.getTimeInMillis()));
// 서로 다른 2개의 시간 연산
String date_str1 = "2021-01-01 11:11:11";
String date_str2 = "2000-03-01 01:12:12";
SimpleDateFormat transFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date1 = transFormat.parse(date_str1);
Date date2 = transFormat.parse(date_str2);
Calendar cal1 = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance();
// 시간 설정
cal1.setTime(date1);
cal2.setTime(date2);
// 날짜 연산
cal1.add(Calendar.MONTH , cal2.get(Calendar.MONTH) + 1); // 월 더하기 - get(Calendar.MONTH)의 결과값이 0~11 이기 때문에 1을 더한다
cal1.add(Calendar.DATE, cal2.get(Calendar.DATE)); // 일 더하기
cal1.add(Calendar.HOUR_OF_DAY, cal2.get(Calendar.HOUR_OF_DAY)); // 시간 더하기
System.out.println("date1 : " + date1);
System.out.println("date2 : " + date2);
System.out.println("연산시간 : " + new Date(cal1.getTimeInMillis()));
// Calendar 속성 값 참고
System.out.println("현재 시간을 얻은 후, 이 중에서 자신이 필요한 부분만 추출해야한다. \n");
System.out.println("1) 년도 YEAR : " + cal.get(Calendar.YEAR) + " 년");
System.out.println("2)  MONTH : " + (cal.get(Calendar.MONTH) + 1) + " 월 (★ 인덱스  0이 1월이기 때문에 +1을 해줘야함)");
System.out.println("3)  DATE : " + cal.get(Calendar.DATE) + " 일");
System.out.println("4) 올해  몇일째 DAY_OF_YEAR : " + cal.get(Calendar.DAY_OF_YEAR));
System.out.println("5) 이번   몇일째 DAY_OF_MONTH : " + cal.get(Calendar.DAY_OF_MONTH));
System.out.println("6) 이번   몇일째 DAY_OF_WEEK : " + cal.get(Calendar.DAY_OF_WEEK) + " (★한 주는 일요일부터 시작한다.)");
System.out.println("7) 이번 달 중, 몇번째 요일 DAY_OF_WEEK_IN_MONTH : " + cal.get(Calendar.DAY_OF_WEEK_IN_MONTH));
System.out.println();
System.out.println("8) 12시간 기준 시간(HOUR) : " + cal.get(Calendar.HOUR) + " 시");
System.out.println("9) 24시간 기준 시간 HOUR_OF_DAY : " + cal.get(Calendar.HOUR_OF_DAY) + " 시");
System.out.println("10) 오전, 오후 AM_PM : " + cal.get(Calendar.AM_PM) + " (오전은 0, 오후는 1 리턴)");
System.out.println("11)  MINUTE : " + cal.get(Calendar.MINUTE) + "분");
System.out.println("12)  SECOND : " + cal.get(Calendar.SECOND) + "초");
System.out.println();
System.out.println("이번 주 월요일? MONDAY : " + cal.get(Calendar.MONDAY));
System.out.println("이번 주 화요일? TUESDAY : " + cal.get(Calendar.TUESDAY)); // 이상
System.out.println("이번 주 수요일? WEDNESDAY : " + cal.get(Calendar.WEDNESDAY)); // 이상
System.out.println("이번 주 목요일? THURSDAY : " + cal.get(Calendar.THURSDAY));
System.out.println("이번 주 금요일? FRIDAY : " + cal.get(Calendar.FRIDAY)); // 이상
System.out.println("이번 주 토요일? SATURDAY : " + cal.get(Calendar.SATURDAY)); // 이상
System.out.println("이번 주 일요일? SUNDAY : " + cal.get(Calendar.SUNDAY)); // 이상
// 시간 차이 연산
```