개발하다 보면 '특정 시간'을 구해야 하는 경우가 많습니다.
코드가 실행되는 그 순간이 필요할 수도 있고, 그 순간으로부터 며칠 후가 필요할 수도 있어요.
CreateDate, RequestDate, ExpireDate 등 날짜 정보의 사용 용도는 매우 많더라구요.
이 포스팅은 Java에서 '특정 시간'을 구하는 방법을 알려드립니다.
저도 언젠가 검색해서 배웠고 손에 맞게 작성해둔 코드입니다.
사용에는 문제가 없었으나 누군가가 보면 조악한 코드일 수 있습니다.
코드에 문제가 있다면 언제든지 피드백 부탁드립니다!
설명없이 바로 코드만 보실분들은 아래 Git 참고해주세요.
SimpleDateFormat을 이용한 날짜 구하기는 Java 8 이전의 코드에서 주로 사용된다고 합니다.
Java 8 이후의 버전에서 사용하여도 문제가 없지만 Java.time 클래스 패키지 사용을 권장하네요. 해당 클래스 사용 포스팅도 조만간 올려 링크를 걸어두도록 하겠습니다!
> Java.Time 클래스를 사용한 오늘 구하기 링크 예정
첫번째로 오늘 날짜 구하기입니다. 정확히는 지금 구하기!
오늘 날짜를 "yyyy-MM-dd HH:mm:ss" 형식의 String으로 반환하는 Method 입니다.
import java.text.SimpleDateFormat;
import java.util.Date;
public String getToday() {
SimpleDateFormat format = new SimpleDateFormat ( "yyyy-MM-dd HH:mm:ss");
Date now = new Date();
String nowStr = format.format(now);
return nowStr;
}
> 결과 값 : 2023-03-25 18:12:06
SimpleDateFormat의 값을 아래와 같이 바꾸면 특수문자 없이 구할 수 있습니다.
개발하다 보면 데이터에서 특수문자를 빼고 싶은 경우들이 있더라구요.
그런 경우에는 Format을 정하는 부분에서 아래와 같이 작성하시면 됩니다.
SimpleDateFormat format = new SimpleDateFormat ("yyyyMMddHHmmss");
> 결과 값 : 20230325181206
오늘을 구할 줄 아니 오늘로부터 n일 후의 날짜를 구해볼 겁니다!
아래 코드 'getPlusDateFromNow' Method는 n일 후의 날짜를 Date 형식으로 반환합니다.
String 형식의 경우 위 1번 항목 (1. 오늘 구하기)처럼 SimpleDateFormat을 적용시키면 됩니다!
import java.util.Calendar;
import java.util.Date;
public static Date getPlusDateFromNow(Date date, int plusDay) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DATE, plusDay);
Date plusDate = calendar.getTime();
return plusDate;
}
> 결과 값 : Mon Mar 27 18:12:06 KST 2023
두번째 코드는 n일 후 날짜의 자정을 가져옵니다.
Calendar에서 시간, 분, 초 정보를 기입해주는 차이가 있습니다.
import java.util.Calendar;
import java.util.Date;
public static Date getDateBasedOn12AM(Date date, int plusDate) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DATE, plusDate);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
Date plusDateMidnight = calendar.getTime();
return plusDateMidnight;
}
> 결과 값 : Mon Mar 27 00:00:00 KST 2023
위 코드에서 보신것 처럼 Calender를 사용하여 날짜 및 시간을 조정하기 때문에 현재 시간에서 몇 시간/분/초 후를 원하신다면 HOUR_OF_DAY/MINUTE/SECOND 부분에 원하는 숫자를 입력하면 됩니다.
Date정보는 SimpleDateFormat을 통해 String으로 반환됩니다.
SimpleDateFormat에서 날짜 형식을 지정하는 값은 아래를 참고해주시면 됩니다.
주로 쓰는 값입니다.
조금 더 자세한 내용은 아래 페이지 참고 부탁드립니다!
포스팅 관련 Git 주소는 아래와 같습니다!
첫 포스팅 끝 ~~~!