Java date 시간 설정 - Java date sigan seoljeong

반응형

Date 객체로 오늘 날짜 가져오기

1) Date 객체 생성, date객체를 직접 찍어봄

2) getTime()메소드 사용(1970년 1/1 부터 주어진 날짜 사이의 경과시간이 반환됨)

///// 1) Date 객체 생성해서 찍어보기
Date myDate = new Date();
System.out.println(myDate); //Fri Sep 03 11:34:26 KST 2021

///// 2) getTime() 
//1970 년 1 월 1 일 00:00:00 UTC와 주어진 날짜 사이의 경과 시간 (밀리 초)을 나타냄
System.out.println(myDate.getTime()); //1630635552571

 


Date 객체에 원하는 날짜 설정하기

1) setTime() 메소드 사용 (1970년 1/1과 세팅하려는 날짜 사이의 경과시간으로 세팅해야됨)

2) SimpleDateFormat을 이용한 세팅

Date myDate = new Date();

///// 1) setTime()
//1970 년 1 월 1 일 00:00:00 UTC와 설정하려는 날짜 사이의 밀리초로 세팅해야됨
myDate.setTime(1609426800000L);
System.out.println(myDate.getTime()); //1609426800000


///// 2) simpleDateFormat으로 String타입 날짜를 date로 변환하여 넣는다.
String myString = "20210101";
SimpleDateFormat dtFormat = new SimpleDateFormat("yyyyMMdd");
Date mydate = dtFormat.parse(myString);

System.out.println(mydate); //Fri Jan 01 00:00:00 KST 2021

 


Calendar 객체로 오늘 날짜 가져오기

1) setTime 으로 오늘날짜 지정 -> getTime으로 날짜 가져오기

2) cal.get(Calendar.YEAR)

* MONTH 는 0부터 시작이므로 0이 1월임. 즉 9월은 8이 출력됨.

//Calendar 객체 생성
Calendar cal = Calendar.getInstance();

///// 오늘 날짜 설정
cal.setTime(new Date());
System.out.println(cal.getTime()); //Fri Sep 03 11:23:48 KST 2021


System.out.println(cal.get(Calendar.YEAR)); /// 년도 2021
System.out.println(cal.get(Calendar.MONTH)); /// 달 8
System.out.println(cal.get(Calendar.DATE)); /// 날짜 3
System.out.println(cal.get(Calendar.HOUR));  /// 시간 
System.out.println(cal.get(Calendar.MINUTE)); /// 분 
System.out.println(cal.get(Calendar.SECOND)); /// 초

Calendar 객체에 원하는 날짜 설정하기

1) set 메소드 사용. 년, 월, 일 값으로 설정

2) setTime 메소드 사용. Date 객체로 설정

Calendar cal = Calendar.getInstance();

///// 1) set 메소드(년,월,일)
cal.set(2021,8,1);
System.out.println(cal.getTime()); //Wed Sep 01 11:23:48 KST 2021


///// 2) setTime 메소드(Date객체)
cal.setTime(mydate);
System.out.println(cal.getTime()); //Fri Jan 01 00:00:00 KST 2021

 


날짜 계산하기

1) 1일 뒤 날짜 구하기 : cal.add(Calendar.Date, 1)

2) 1달 뒤 날짜 구하기 : cal.cadd(Calendar.Month, 1);

3) 두 날짜 사이이의 간격 구하기

Calendar cal = Calendar.getInstance();
cal.setTime(new Date());

///// 오늘날짜 +1 => 내일
cal.add(Calendar.DATE,1);
System.out.println(cal.getTime()); //Thu Sep 02 11:23:48 KST 2021

///// 오늘날짜 -7 => 7일 전(일주일 전)
cal.add(Calendar.DATE,-7);

///// 오늘 달 +1 => 다음 달
cal.add(Calendar.MONTH,1);
System.out.println(cal.getTime()); //Sat Oct 02 11:23:48 KST 2021

///// 오늘 달 -1 => 저번 달
cal.add(Calendar.Month,-1);


///// 두 날짜 사이의 간격 구하기 (일 수)
SimpleDateFormat dtFormat = new SimpleDateFormat("yyyy/MM/dd");
Date sTime = dtFormat.parse("20210801");
Date eTime = dtFormat.parse("20210901");
long diffDays = (eTime.getTime() - sTime.getTime()) / 1000 / (24*60*60);

 


String -> Date

String myString = "20210101";
SimpleDateFormat dtFormat = new SimpleDateFormat("yyyyMMdd");
Date myDate = dtFormat.parse(myString);

System.out.println(myDate);
//Fri Sep 03 00:00:00 KST 2021

 

Date -> String

Date myDate = new Date();
SimpleDateFormat dtFormat = new SimpleDateFormat("yyyyMMdd");
String myString = dtFormat.format(myDate);

 

Calendar -> String

Calendar cal = Calendar.getInstance();
cal.set(2021,0,1);

SimpleDateFormat dtFormat = new SimpleDateFormat("yyyyMMdd");
String myString = dtFormat.format(cal.getTime());

System.out.println(myString); //20210101

 

String -> Calendar

String myString = "20210101";
SimpleDateFormat dtFormat = new SimpleDateFormat("yyyyMMdd");
Date myDate = dtFormat.parse(myString);
cal.setTime(mydate);

System.out.println(cal.getTime());

 

Timestamp -> String

Date st = new Date(Integer.parseInt(timestamp)*1000L);
SimpleDateFormat dtFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String result = dtFormat.format(st);

반응형

공유하기

게시글 관리

구독하기메리

'코딩 관련 > Java' 카테고리의 다른 글

[JAVA] double 숫자 E 없애기 / 지수 없애기  (0)2021.09.06[JAVA] ArrayUtils로 배열에 값 추가하기 / 배열 합치기 / 배열 늘리기  (0)2021.09.06[Java] CSV 생성 및 return / JAVA CSV 전달  (0)2021.08.26[JAVA] excel 읽기  (1)2021.08.23[JAVA] txt파일 읽기 / 쓰기  (0)2021.07.13

이번 예제와 같이 날짜정보를 String 형으로 제공 하는 경우는 보통 API 호출 또는 전문 호출등을 통해 특정 날짜 정보를 가져 올 경우 형식은 정해져 있으나 (ex. yyyyMMddHHmmss) 어떤 값이 올지 모를 경우에 많이 사용합니다. 


만약 정확한 날짜 정보를 알고 있다면 아래와 같이 직접 입력 하는 방법도 사용 가능합니다. 

cal.set(Calendar.YEAR, 2018);
cal.set(Calendar.MONTH, Calendar.MAY);
cal.set(Calendar.DATE, 5);

cal.set(Calendar.HOUR, 8);
cal.set(Calendar.MINUTE, 30);
cal.set(Calendar.SECOND, 0);

처음 방식과 다르게 Calendar.MONTH 에 Calendar.MAY 라는 값을 셋팅 했습니다. 5월이라는 상수 값을 그대로 입력 했으므로 처음과 달리 -1 을 하거나 할 필요가 없습니다.