한국어

EDPS

[Java] 자바 시간, 날짜 계산 (2)

조회 수 163 추천 수 0 2018.04.03 09:01:08

날짜 시간 계산 예제

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import java.util.*;
import java.text.*;
public class StringToDate {
public static void main(String[] args) {
try { String str_date="2010-07-09T12:50:58";
DateFormat formatter ;
Date date ;
formatter = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss");
date = (Date)formatter.parse(str_date);
System.out.println("Today is " +date );
} catch (ParseException e)
{System.out.println("Exception :"+e); }
}
}

 

 

 

Java에서 내가 알고 있는 시간과 관련된 클래스는 다음의 세가지가 있다.


Calendar

날짜와 요일 관련하여 유용한 기능들을 가진 클래스이다. 달력을 그리거나, 오늘이 한달중에서 몇번째 주이고 몇번째 요일인지 계산하는 기능들을 가지고 있다. 단, 시간 정확도는 분까지만 보장한다. 날짜 수준까지만 사용하는 것을 권장한다.


Date

날짜를 구하는 클래스이다. API문서에는 milisecond 수준까지 정확도를 보장한다고 되어 있다. 하지만 메소드중 많은 메소드가 deprecated(권장하지 않음)이기 때문에, 날짜 계산이 필요할 경우에는 Calendar클래스의 add(int, int)를 사용하고, millisecond 단위로 계산할때는 System.getCurrentTimemilis()를 권장한다.


System.getCurrentTimemilis()

국제표준시각(UTC, GMT) 1970/1/1/0/0/0 으로부터 경과한 시각을 밀리초 단위까지 계산하여 long 값으로 반환한다. 주로 정확한 시간 계산이 필요한 경우에 해당 메서드를 주로 사용한다. 필요한 경우 Date클래스나 Calendar 클래스로 변환하여 사용할 수 있다.

 

아래는 Calendar 클래스의 사용법이다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
//현재 날짜를 받아옴.
 
Calendar t = Calendar.getInstance();
 
//오늘날짜의 해당연도를 구함
 
String year = Integer.toString(t.get(Calendar.YEAR));
 
//오늘날짜의 해당 월을 구함. 1월은 0이기 때문에 + 1
 
String month = Integer.toString((t.get(Calendar.MONTH) + 1));
 
//한자리 숫자, 예를 들면 1월인 경우 "01"등으로 문자열 변환
 
month = month.length() > 1 ? month : "0" + month;
 
//오늘의 날짜 구함
 
String day = Integer.toString(t.get(Calendar.DAY_OF_MONTH));
 
day = day.length() > 1 ? day : "0" + day;
 
//현재 시각의 시를 구함.
 
String hh = Integer.toString(t.get(Calendar.HOUR_OF_DAY));
 
//현재 시각의 분을 구함.
 
String mm = Integer.toString(t.get(Calendar.MINUTE));
 
//오늘의 요일을 구함
 
String WeekDay = Integer.toString(t.get(Calendar.DAY_OF_WEEK));
 
//오늘이 1~5번째 주중 몇번째 주인지 구함.
 
String WeekOfMonth = Integer.toString(t.get(Calendar.WEEK_OF_MONTH);
 
//오늘을 기준으로 3주전 날짜로 수정
 
 
 
t.add(Calendar.WEEK_OF_MONTH, -3);

 

 

 

 

아래는 Date 클래스의 사용법이다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//현재 시각 가져오기.
 
Date today = new Date ();
 
//출력
 
System.out.println ( today );
 
//시작일. 여기서는 샘플로 24시간 전의 시각을 지정.
 
Date startDay = new Date(System.currentTimeMillis() - 1000*60*60*24);
 
//종료일. 여기서는 샘플로 24시간 후의 시각을 지정.
 
Date endDay = new Date(System.currentTimeMillis() - 1000*60*60*24);
 
//해당 기간 조회
 
if(startDate.before(today) && endDate.after(today))
 
{
 
 System.out.pringln("지정하신 날짜는 해당 기간내에 존재합니다.");
 
}

 


 

출처: http://blog.naver.com/vlueguy7/70096153885



출처: http://betatester.tistory.com/17 [It's My Real Life]
List of Articles
번호 제목 글쓴이 날짜 조회 수
184 [Java] 자바 날짜, 시간 계산 예제 (1) 수텐리 2018-04-03 448
» [Java] 자바 시간, 날짜 계산 (2) 수텐리 2018-04-03 163
182 온라인 무료 강좌 수텐리 2018-03-29 27
181 Linux Command - CPU 성능값 수텐리 2018-03-22 27
180 구글 차트 (썬구루님의 블로그) 수텐리 2018-03-22 79
179 성능 모니터링 - Collectd 수텐리 2018-03-22 30
178 성능 모니터링 - Apache JMeter [1] 수텐리 2018-03-22 44
177 암호화폐와 끊을 수 없는 연결고리, 블록체인 수텐리 2018-03-20 191
176 프로젝트 자동화 환경 구축 (SVN, Redmine, Hudson, Ant, maven, nexus) [2] 수텐리 2018-03-09 123
175 youtube에서 영상 Download 수텐리 2017-09-26 60
174 브랜드 PC 및 노트북 옵션키 (Boot, Recovery, CMOS, Wifi) WindBoy 2017-09-14 47
173 Linux 명령 [2] WindBoy 2017-08-25 57
172 리눅스 명령어 모음(용도별) [1] WindBoy 2017-08-25 401
171 Linux Find Option 명령 2가지 [1] 수텐리 2017-08-09 134
170 [IT열쇳말] 옵티마이즐리 WindBoy 2017-07-05 91
169 랜섬웨어 WindBoy 2017-07-05 43
168 위챗(Wechat)이란? WindBoy 2017-06-15 202
167 레코벨 외부 연동 Rest API WindBoy 2016-11-10 109
166 레코벨 외부 Guide WindBoy 2016-11-10 456
165 컴퓨터에 새로운 장비를 탑제하당 (SSD 256Gb) file WindBoy 2016-06-01 35