728x90
안녕하세요 ki입니다.
이번 Exp는 자바로 Date 구하기입니다.
금융권 프로젝트를 하면서 제일 중요하고 많이 들었던 말이 "영업일"입니다.
영업일은 간단하게 주말, 휴일, 공휴일을 말합니다.
저 같은 경우는 문서발급 시 영업일을 체크하거나 당일 동안 은행 계좌가 잠겨지는 잔액증명서 개발을 하면서
영업일을 이용한 개발을 했습니다.
Java 날짜 패키지
자바에서 날짜 관련 패키지는
대표적은로 java.util.Date, java.util.Calendar, java.time.* 등이 있습니다.
java.util.Date는 자바 1.0 버전 부터 출시
java.util.Calendar는 자바 1.1 버전부터 출시
java.time 패키지는 java8 버전 이후부터 출시
time 패키지 더욱 사용하기 쉽고 편리해서 자주 사용하고 있습니다.
Date 패키지
import java.util.Date;
Date date = new Date();
date.Date()
// 현재 날짜와 시간으로 Date 객체 생성
date.Date(long date)
// 1970년 1월 1일 00:00:00 생성
date.getTime():
// 1970년 1월 1일 00:00:00 밀리초 단위의 시간 반환
date.setTime(long time):
// Date 객체의 시간을 지정된 밀리초 단위의 시간을 설정
date.toString():
// 현재 Date 객체의 문자열을 반환
Calendar 패키지
import java.util.Calendar;
// 추상클래스인 calendar는 인스턴스 생성 할 수 없습니다.
// 현재 로컬의 시간대와 설정으로 새로운 Calendar 객체를 생성
Calendar cal = Calendar.getInstance();
cal.get(Calendar.MONTH)
// 해당 월을 반환
cal.set(int field, int value)
// 지정된 필드의 값을 설정
cal.add(int field, int amount)
// 지정된 필드의 값을 주어진 양만큼 증가 또는 감소
cal.getTime()
// Date 객체로 현재의 날짜와 시간을 반환
cal.setTime(Date date)
// Date 객체에서 날짜와 시간을 설정
cal.setTimeInMillis(long millis)
// 지정된 밀리초 시간으로 날짜와 시간을 설정
cal.isLeapYear(int year)
// 주어진 연도가 윤년(윤달)인지 여부를 확인
cal.getActualMaximum(int field)
// 지정된 필드의 최대 값을 반환
cal.get(Calendar.MONTH)
// ex 월의 최대 일 수를 반환
getInstance()
// 현재 로컬의 시간대와 설정으로 새로운 Calendar 객체 생성
getInstance(TimeZone zone)
// 지정된 시간대와 설정으로 새로운 Calendar 객체 생성
getInstance(Locale aLocale)
// 지정된 로케일로 새로운 Calendar 객체 생성
getInstance(TimeZone zone, Locale aLocale)
// 지정된 시간대와 로케일로 새로운 Calendar 객체 생성
Calendar.YEAR
// 해당 연도
Calendar.MONTH
// 해당 월
Calendar.DAY_OF_MONTH
// 이 달의 몇일
Calendar.DAY_OF_Week
// 요일
Calendar.HOUR
// 시간
클래스 상수는 5가지 외의도 여러 가지가 존재합니다.
형식화 클래스
- DecimalFormat
숫자 데이터를 정수, 부동소수점, 금액 등의 다양한 형식으로 표현이 가능합니다.
double number = 1234567.89;
// 1.원하는 출력형식의 패턴을 작성하여 DecimalFormat 인스턴스를 생성
DecimalFormat df = new DecimalFormat("#.#E0");
// 2.출력하고자 하는 문자열로 format 메소드를 호출
String result = df.format(number);
- SimpleDateFormat
날짜 데이터를 원하는 형태로 출력합니다.
Date today = new Date();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
String result = df.format(today);
//오늘 날짜를 yyyy-MM-dd 형태로 반환
DateFormat df = new SimpleDateFormat("yyyy년 MM월 dd일");
DateFormat df2 = new SimpleDateFormat("yyyy/MM/dd");
Date d = df.parse("2018년 10월 3일");
System.out.println(df2.format(d)); // 2018/10/03
- Calendar와 Date 사이에 변환
//1. Calendar를 Date로 변환
Calendar cal = Calendar.getInstance();
Date d = new Date(cal.getTimeInMillis());
//2. Date를 Calendar로 변환
Date d = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(d);
Time 패키지
java.time 패키지는
- java.time.LocalDate,
- java.time.LocalTime,
- java.time.LocalDateTime,
- java.time. DateTimeFormatter
에 대해 설명하겠습니다.
- LocalDate
import java.time.LocalDate;
// LocalDate 클래스는 연도, 월, 일을 나타내는 클래스입니다. 시간은 포함하지 않습니다.
LocalDate date = LocalDate.now(); // 현재 날짜
LocalDate specificDate = LocalDate.of(2024, 1, 17); // 지정된 날짜
// 결과 2024-1-17
// 날짜 차이 계산
LocalDate startDate = LocalDate.now();
// 결과 2024-04-10
LocalDate endDate = LocalDate.of(2024,4,11);
// 결과 2024-04-11
Period period = Period.between(startDate, endDate);
period.getYears();
// 0년 차이
period.getMonths();
// 0개월 차이
period.getDays();
// 1일 차이 31일차이는 1개월 1일로 반환
- LocalTime
import java.time.LocalTime;
// LocalTime 클래스는 시간을 나타내는 클래스입니다. 연도, 월, 일은 포함하지 않습니다.
LocalTime time = LocalTime.now();
// 현재 시간
LocalTime specificTime = LocalTime.of(14, 30);
// 지정된 시간 (14시 30분)
// 결과 14:30:00.0000000
// 시간비교
LocalTime startTime = LocalTime.now();
// 결과 12:00:00
LocalTime endTime = LocalTime.of(12, 10, 00);
// 결과 12:10:00
// startTime이 endTime 보다 이전 시간 인지 비교
startTime.isBefore(endTime);
// 결과 true
// startTime이 endTime 보다 이후 시간 인지 비교
startTime.isAfter(endTime);
// 결과 false
// 시간 차이 계산
LocalTime startTime = LocalTime.now();
// 결과 16:00:00
LocalTime endTime = LocalTime.of(16,00,00);
// 결과 16:00:00
Duration duration = Duration.between(startTime, endTime);
duration.getSeconds();
duration.getNano();
- LocalDateTime
import java.time.LocalDateTime;
// LocalDateTime 클래스는 날짜와 시간을 모두 포함하는 클래스입니다.
LocalDateTime dateTime = LocalDateTime.now();
// 현재 날짜와 시간
LocalDateTime specificDateTime = LocalDateTime.of(2024, 1, 17, 14, 30);
// 지정된 날짜와 시간
// 결과 2024-01-17T14:30:00.0000000
// 날짜 더하기 (빼기는 minus 입니다.)
plusYears() //년
plusMonths() // 월
plusWeeks() // 주
plusDays() // 일
plusHours() // 시
plusMinutes() // 분
plusSeconds() // 초
plusNanos() //밀리초
// ex=====================================
LocalDateTime plusDate = LocalDateTime.now();
// 2024-04-10T16:00:00.00
plusDate.plusDays(2);
// // 2024-04-12T16:00:00.00
- DateTimeFormatter
import java.time.format.DateTimeFormatter;
// DateTimeFormatter 클래스는 날짜와 시간을 원하는 형식으로 변환하는 데 사용됩니다.
LocalDateTime dateTime = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formattedDateTime = dateTime.format(formatter);
// 날짜와 시간을 지정된 형식으로 변환
// ex
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy년 M월 d일 a h시 m분");
String nowString = dateTime.format(dateTimeFormatter);
// 2024년 04월 10일 오후 4시 0분
// ex2
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
String nowString = dateTime.format(dateTimeFormatter);
// 2024-04-10 16:00:00
이상 Java에서 날짜를 이용한 패키지와 클래스들 소개를 마칩니다!
참조
'Exp > Java & Java Script' 카테고리의 다른 글
[Java] DecimalFormat으로 천단위에 점을 찍자 (1) | 2024.05.15 |
---|---|
[JS] 숫자 금액을 한글 금액으로 바꾸기를 했다. (4) | 2024.05.14 |
[Java] 정규식은 어려워 ...2 (1) | 2024.04.07 |
[JS] 정규식은 어려워... (0) | 2024.04.02 |
[JS] JavaScript로 문자를 찾아보자 (0) | 2024.04.01 |