본문 바로가기
JAVA

[Java] 특정 날짜가 유효기간 내에 있는지 확인 하는 방법

by 고체물리학 2021. 11. 19.

2021.11.17 - [JAVA] - [Java] 값 비교하기 compareTo 사용하기

이전에 발행했던 compareTo 메서드를 사용해서 유효기간을 검사하는 방법을 구현할 것이다

 

1. 예를들어 2021-01-01 00:00:00부터 1년간의 유효기간이 있다고 가정하면(2021-12-31 23:59:59)

 

오늘 날짜 기준으로 유효기한이 안 지나있는 상태이다

이걸 자바 코드로 확인할 수 있는 방법을 작성한다

 

    SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
    Date currentTime = new Date();
    String today = format.format(currentTime);
    System.out.println("현재 날짜:"+ today);
    
    String start_dt = "20210101000000";
    String end_dt = "20211231235959";
    
    Date startDate = format.parse(start_dt); //문자열을 날짜형식으로 변환해줌
    Date endDate = format.parse(end_dt);
    Date todate = format.parse(today);

 

- Date로 현재 날짜를 가져와서 저장하고 fomat.parse로 현재 시간 시작시간 종료시간을 변환한다

 

int compare1 = todate.compareTo(startDate); //크다(1), 같다(0), 작다(-1) 
int compare2 = endDate.compareTo(todate); 

System.out.println("compare:"+ compare1 + compare2);

if(compare1 >= 0 && compare2>=0 ) {
    System.out.println("사용가능");
} else {
    System.out.println("유효기간만료");
}

 

- 오늘 날짜가 시작날짜보다 크고 종료 날짜보다 작으면 "사용가능" 문자열을 출력한다

 

[전체 코드]

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.util.Date;

public class test {

 public static void main(String[] args) throws ParseException  {

    SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
    Date currentTime = new Date();
    String today = format.format(currentTime);
    System.out.println("현재 날짜:"+ today);
    
    String start_dt = "20210101000000";
    String end_dt = "20211231235959";
    
    Date startDate = format.parse(start_dt); //문자열을 날짜형식으로 변환해줌
    Date endDate = format.parse(end_dt);
    Date todate = format.parse(today);

    System.out.println("startDate:" + startDate); //변환 결과
    System.out.println("endDate:" + endDate);
    System.out.println("todate:" + todate);
    
    int compare1 = todate.compareTo(startDate); //크다(1), 같다(0), 작다(-1) 
    int compare2 = endDate.compareTo(todate); 

	System.out.println("compare:"+ compare1 +" "+ compare2);

    if(compare1 >= 0 && compare2>=0 ) {
    System.out.println("사용가능");
    } else {
    System.out.println("유효기간만료");
    }
 }


}

 

[결과]

 

 

2. 오늘 날짜가 2021-01-01 00:00:00부터 2021-06-30 23:59:59 기한 안에 들어가는지 확인하는 코드 (boolean return)

 

 public static boolean IsDate() throws ParseException  {
	 	boolean result = false;
	    SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
	    Date currentTime = new Date();
	    String today = format.format(currentTime);
	    System.out.println("현재 날짜:"+ today);
	    
	    String start_dt = "20210101000000";
	    String end_dt = "20210630235959";
	    
	    Date startDate = format.parse(start_dt); //문자열을 날짜형식으로 변환해줌
	    Date endDate = format.parse(end_dt);
	    Date todate = format.parse(today);

	    
	    int compare1 = todate.compareTo(startDate); //크다(1), 같다(0), 작다(-1) 
	    int compare2 = endDate.compareTo(todate); 


	    if(compare1 >= 0 && compare2>=0 ) {
	    	result = true;
	    } else {
	    	result = false;
	    }
		return result;
	 }

 

boolean 리턴 값으로 원하는 조건문에 사용할 수 있다

 

[전체 코드]

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.util.Date;

public class test {

 public static void main(String[] args) throws ParseException  {

	 if(IsDate()) {
		 System.out.println("True");
		 
	 }else {
		 System.out.println("False");
	 }
 }
 
 public static boolean IsDate() throws ParseException  {
	    boolean result = false;
	    SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
	    Date currentTime = new Date();
	    String today = format.format(currentTime);
	    System.out.println("현재 날짜:"+ today);
	    
	    String start_dt = "20210101000000";
	    String end_dt = "20210630235959";
	    
	    Date startDate = format.parse(start_dt); //문자열을 날짜형식으로 변환해줌
	    Date endDate = format.parse(end_dt);
	    Date todate = format.parse(today);

	    
	    int compare1 = todate.compareTo(startDate); //크다(1), 같다(0), 작다(-1) 
	    int compare2 = endDate.compareTo(todate); 


	    if(compare1 >= 0 && compare2>=0 ) {
	    	result = true;
	    } else {
	    	result = false;
	    }
		return result;
	 }


}

[결과]

 

오늘 날짜 이외에도 변수 today에 다른 날짜를 대입해서 사용할 수 있다

반응형

댓글