코딩테스트를 하다보면 날짜계산이 나오는 순간 멘붕이 되는것같다..
파이썬처럼 데이터 타입을 신경안써도 되면 조금 더 수월하려나..
무튼 씨쁠쁠일때도 자바일때도 날짜계산은 너무 어렵다..😂
- 두 날짜의 차이를 계산해야할때! - 초단위
date를 년도부터 시간까지했지만 날짜만 적어도 계산이 가능하다!
년도는 네글자로 yyyy형태로 적어도 된다.
저번에 코테볼때는 두글자밖에 없길래 그냥 두글자로 해본것일뿐이다..
String을 Date 타입으로 바꾼 뒤, 시간의 차이를 계산한다.
밑에처럼 하면 '초'를 단위로 두 날짜간의 차이가 계산된다.
계산 결과는 long 타입으로 받아줘야한다
- 에러사항
1) parse도 try-catch 문을 쓰지않으면
error: unreported exception ParseException; ```````가 뜬다
물론 나도 안써서 에러가 났었다 ㅎ
2) month랑 hour는 대문자로 써라
처음에 생각없이 mm으로 썼는데 결과가 제대로 안나와서 당황..
MM HH로 쓸것!
이런실수 안할것같지만..정신없이 짜다보면 이런 실수를 하게 된다..
특히 시간부족한 코테에서 이런 실수는 치명적이니 제대로 쓸것!
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.text.ParseException;
public class Main
{
public static void main(String[] args) {
String date1 = "16/09/21 20:02:22";
String date2= "16/10/11 21:02:15";
SimpleDateFormat format = new SimpleDateFormat("yy/MM/dd HH:mm:ss");
Date FirstDate = null;
Date SecondDate=null;
try{
FirstDate = format.parse(date1);
SecondDate = format.parse(date2);
}catch(ParseException e){
;
}
long calDate = Math.abs(FirstDate.getTime() - SecondDate.getTime());
//시간을 '일' 단위로 바꾸고 싶을때
long calDateDays = calDate / ( 24*60*60*1000);
calDateDays = Math.abs(calDateDays);
System.out.println("시간차이:"+calDate);
System.out.println("날짜차이:"+calDateDays);
}
}
결과는 이런식으로 초단위로 나온다!
일(day) 단위로 바꾸고 싶으면
long calDateDays = calDate / ( 24*60*60*1000);
calDateDays = Math.abs(calDateDays);
- String type을 Date타입으로 변환하고 날짜 더해주기
cal.add(Calendar.MONTH, 2)하면 그날짜에서 2달을 더해준다.
.DATE / .HOUR_OF_DAY / .MINUTE/ .SECOND/ .YEAR 다 있으니까 알아서 써주면 된다
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.text.ParseException;
public class Main
{
public static void main(String[] args) {
String date1 = "16/09/21 20:02:22";
Calendar cal = Calendar.getInstance();
//여기 이름 format말고 df로 해야겠다..
SimpleDateFormat format = new SimpleDateFormat("yy/MM/dd HH:mm:ss");
Date FirstDate = null;
try{
FirstDate = format.parse(date1);
}catch(ParseException e){
;
}
cal.setTime(FirstDate);
cal.add(Calendar.MONTH,2 );
System.out.println("결과:"+format.format(cal.getTime()));
}
}
- 만약 현재시간을 받아오고 싶으면
그냥 cal.getTime()하면 된다 -> 이걸 특정 데이터타입으로 바꾸고 싶으면 format.format(cal.getTime())하면 된다!
* 블로그 참고 - highcode.tistory.com/5
codechacha.com/ko/java-examples-add-two-dates/
'결국 JAVA로 갈아타버린..🍂' 카테고리의 다른 글
강의정리 - 이진트리순회(BFS) (0) | 2022.03.08 |
---|---|
강의정리- 이진트리순회(DFS) / 부분집합 구하기(DFS) (0) | 2022.03.07 |
강의정리 - 단어뒤집기(StringBuilder) (0) | 2022.03.07 |
강의 정리 - 문자찾기 / 대소문자 변환 / 문장 속 단어 (0) | 2022.03.06 |
백준- 행운의 문자열 자바/java (0) | 2020.10.23 |