Java 현재 시간 구하기, 오늘 날짜 구하기 (Java, Today, Time, SimpleDateFormat, JavaUtilDate)

hamtom!·2023년 3월 25일
1

Java

목록 보기
1/1
post-thumbnail

개발하다 보면 '특정 시간'을 구해야 하는 경우가 많습니다.
코드가 실행되는 그 순간이 필요할 수도 있고, 그 순간으로부터 며칠 후가 필요할 수도 있어요.
CreateDate, RequestDate, ExpireDate 등 날짜 정보의 사용 용도는 매우 많더라구요.

이 포스팅은 Java에서 '특정 시간'을 구하는 방법을 알려드립니다.
저도 언젠가 검색해서 배웠고 손에 맞게 작성해둔 코드입니다.
사용에는 문제가 없었으나 누군가가 보면 조악한 코드일 수 있습니다.
코드에 문제가 있다면 언제든지 피드백 부탁드립니다!

설명없이 바로 코드만 보실분들은 아래 Git 참고해주세요.

Github - DateUtil.java

SimpleDateFormat을 이용한 날짜 구하기는 Java 8 이전의 코드에서 주로 사용된다고 합니다.
Java 8 이후의 버전에서 사용하여도 문제가 없지만 Java.time 클래스 패키지 사용을 권장하네요. 해당 클래스 사용 포스팅도 조만간 올려 링크를 걸어두도록 하겠습니다!

> Java.Time 클래스를 사용한 오늘 구하기 링크 예정


1. 오늘 구하기

첫번째로 오늘 날짜 구하기입니다. 정확히는 지금 구하기!
오늘 날짜를 "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



2. +n일 구하기

오늘을 구할 줄 아니 오늘로부터 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에서 날짜 형식을 지정하는 값은 아래를 참고해주시면 됩니다.
주로 쓰는 값입니다.

  • y : 년
  • M : 월
  • d : 일
  • D : 월 구분이 없는 일 (1~365)
  • E : 요일
  • h : 시 (1~12)
  • H : 시 (0~23)
  • m : 분
  • s : 초
  • S : 밀리 초 (1/1000초)
  • a : 오전/오후

조금 더 자세한 내용은 아래 페이지 참고 부탁드립니다!

Oracle SimpleDateFormat 참고 페이지

포스팅 관련 Git 주소는 아래와 같습니다!

Github
Github - DateUtil.java


감사합니다!

첫 포스팅 끝 ~~~!

profile
I want to be a real developer!

0개의 댓글