Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 자바if문
- 효율적인연산
- 변수의 초기화
- 변수명명규칙
- 프로그래머스
- 자바switch문
- 자바상수
- 클래스배열
- 기타제어자
- 반복문라벨
- 중첩for문
- read()함수
- 자바수우미양가
- 자바클래스
- 오버로딩
- 자바제어문
- 자바형식
- 연산자우선순위
- 자바실행방법
- 자바기타제어자
- 자바접근지정자
- 누승재귀
- 자바자료형
- 자바별찍기
- 자바연산자
- 자바함수
- 오라클
- 팩토리얼재귀
- 겟셋함수
- SQL
Archives
- Today
- Total
h-i-s-t-o-r-y
[Java] Date, Calendar 클래스 (java.util 패키지) 본문
package days23;
import java.util.Date;
public class Ex02 {
public static void main(String[] args) {
// Date 클래스 = 날짜 + 시간 다루는 클래스
// ** java.util 패키지 주의 (java.sql.Date 아님X)
Date d = new Date();
//Wed Apr 07 10:41:53 KST 2021
System.out.println(d); //toString() 생략됐다고 이해해도됨
//System.out.println(d.toString());
//년월일 //2021년 4월 7일
System.out.println(d.getYear() + 1900); //121+1900 = 2021
System.out.println(d.getMonth() + 1); //3+1 = 4
System.out.println(d.getDate()); //7
//시분초 //오전 10:48:08
System.out.println(d.getHours()); //10
System.out.println(d.getMinutes()); //48
System.out.println(d.getSeconds()); //08
//요일 //일(0)월(1)화(2)수(3)..
System.out.println(d.getDay()); //3 수요일
String s = getDate(d);
System.out.println(s);
}
// 2021년 4월 7일 11:08:08 (수)
private static String getDate(Date d) {
return String.format("%d년 %d월 %d일 %02d:%02d:%02d (%c)"
, 1900 + d.getYear()
, d.getMonth() + 1
, d.getDate()
, d.getHours()
, d.getMinutes()
, d.getSeconds()
, "일월화수목금토".charAt(d.getDay()));
}
}
package days23;
import java.util.Date;
public class Ex03 {
public static void main(String[] args) {
// [문제1]
Date d = new Date();
/*
// GMT = 그리니치 평균 시간 = 세계 표준 시간
// 7 Apr 2021 02:10:27 GMT
System.out.println(d.toGMTString());
// Locale 지역
// 2021. 4. 7 오전 11:10:27
System.out.println(d.toLocaleString());
*/
/*
// 지났는지 안지났는지 boolean 반환
// d.after(when) 기준날짜 포함 이후
// d.before(when) 기준날짜 포함 이전
// d.equals(obj) 같은 날짜냐
// since January 1, 1970, 00:00:00 GMT
System.out.println(d.getTime()); // long 1617761584812(ms)
// long Date 값 -> Date p 객체 생성
// 2021. 4. 7 오전 11:13:04
Date p = new Date(1617761584812L); // L 안붙이면 기본 int 인식
System.out.println(p.toLocaleString());
*/
// 만년달력
// 1. 년 월 1일 > 무슨요일?
// 2. 년 월 > 마지막 날짜 몇일?
//
int year = 2020;
int month = 3;
// 1. 무슨요일? d.getDay()
// Date d1 = new Date(year-1900, month-1, 1);
// System.out.println(d1.getDay());
// d 객체 생성후 값 설정
d.setYear(year-1900);
d.setMonth(month-1);
d.setDate(1);
d.setHours(0);
d.setMinutes(0);
d.setSeconds(0);
//Sun Mar 01 00:00:00 KST 2020 -> 일요일
System.out.println(d);
// 2. 마지막 날짜 몇일?
d.setMonth(month); // 3-> 4월이 들어감
d.setDate(0); //날짜에 0을주니 이전달(3월)의 마지막 날짜를 리턴함
System.out.println(d.getDate());
// Date.from(instant)
// Date.parse(s)
// String -> Date 변환
String s = "1 May 2010 02:07:31 GMT";
long dateLong = Date.parse(s); //1272679651000
System.out.println(new Date(dateLong));
}//main
}//class
package days23;
import java.util.Calendar;
public class Ex04 {
public static void main(String[] args) {
// p.530 [문제2]
// JDK 1.1 Calendar 클래스 추상클래스 이므로 객체 생성 X
//Calendar c = new Calendar(); 구현해야함!
Calendar c = Calendar.getInstance(); // * getInstance() *
//캘린더 객체 안에 상수값 쓰자고요~
// int field = 1; //처음엔 이렇게 했는데
// System.out.println(Calendar.YEAR); //1
System.out.println(c.get(Calendar.YEAR)); //2021년
// field = 2;
// System.out.println(Calendar.MONTH); //2
System.out.println(c.get(Calendar.MONTH) + 1); //4월
System.out.println(c.get(Calendar.DATE)); //7일
// [Date클래스에는 없던 기능]
// 시간, [24시간], 분, 초, [밀리세컨드], 오전/오후 //오후 12:02:21
System.out.println(c.get(Calendar.HOUR)); //0시
System.out.println(c.get(Calendar.HOUR_OF_DAY)); //12시
System.out.println(c.get(Calendar.MINUTE)); //2분
System.out.println(c.get(Calendar.SECOND)); //21초
System.out.println(c.get(Calendar.MILLISECOND)); //131ms
System.out.println(c.get(Calendar.AM)); //1
System.out.println(c.get(Calendar.AM_PM)); //1
// Date : 일요일(0)~토(6)
// ** Calendar : 일요일(1)~토(7)
System.out.println(c.get(Calendar.DAY_OF_WEEK)); //4
// [이 해의 몇째주]?
System.out.println(c.get(Calendar.WEEK_OF_YEAR)); //올해 15주
// [이 달의 몇째주]?
System.out.println(c.get(Calendar.WEEK_OF_MONTH)); //이번달 2째주
// [이 해의 몇째날]?
System.out.println(c.get(Calendar.DAY_OF_YEAR)); //97일
// [이 달의 몇째날]?
System.out.println(c.get(Calendar.DAY_OF_MONTH)); //7일
// [이 달의 몇째요일]?
System.out.println(c.get(Calendar.DAY_OF_WEEK_IN_MONTH)); //1 첫번째수요일
// 이 달의 마지막 날짜..
System.out.println(c.getActualMaximum(Calendar.DATE)); //30
}//main
}//class
package days23;
import java.util.Calendar;
import java.util.Date;
public class Ex05 {
public static void main(String[] args) {
// p.529 [문제3]
// c.setTime / c.getTime / getTimeInMillis(L)
Date d = new Date();
Calendar c = Calendar.getInstance();
// 1. Date -> Calendar 형변환
Date date = d;
c.setTime(date);
// 2. Calendar -> Date 형변환
long datelong = c.getTimeInMillis();
Date d2 = new Date(datelong);
// or..
Date d3 = c.getTime();
}
}
package days23;
import java.util.Calendar;
public class Ex06 {
public final static String DAY_OF_WEEK = " 일월화수목금토";
public static void main(String[] args) {
// [문제4] 두 날짜 사이의 간격 : 일 시간 분 초 지났다/남았다
// p.531 예제 10-2
// p.532, 533
// 1. 개강일 무슨요일 / 오늘 무슨요일 / 날짜정보출력
// 2. 개강일로부터 오늘까지 ??초
// 3. 일/시간/분/초 출력
Calendar openingDay = Calendar.getInstance();
openingDay.set(2021, 3-1, 8);
Calendar today = Calendar.getInstance();
System.out.printf("> 개강일 : %s\n", toString(openingDay));
System.out.printf("> 오늘 : %s\n", toString(today));
long diff = today.getTimeInMillis() - openingDay.getTimeInMillis();
System.out.println(diff +" ms");
System.out.println(diff/1000 +" s");
System.out.println(diff/1000/60 +" m");
System.out.println(diff/1000/60/60 +" h");
System.out.println(diff/1000/60/60/24 +" d");
}//main
private static String toString(Calendar c) {
return String.format("%d년 %d월 %d일(%c)"
, c.get(Calendar.YEAR)
, c.get(Calendar.MONTH)+1
, c.get(Calendar.DATE)
, DAY_OF_WEEK.charAt(c.get(Calendar.DAY_OF_WEEK)));
}
}//class
package days23;
import java.util.Calendar;
public class Ex08 {
public static void main(String[] args) {
// p.535 [문제5]
// arg로 입력받은 년도, 월의 달력 출력
if( args.length != 2) {
System.out.println("> 년도 월 입력하세요....");
return;
}
int year = Integer.parseInt( args[0] );
int month = Integer.parseInt( args[1] );
System.out.printf("\t\t\t%d년 %d월\n", year, month);
Calendar c = Calendar.getInstance();
c.set(year, month - 1, 1);
// 1일 무슨요일? *주의* 1(일)~7(토)
int FirstDayOfWeek = c.get(Calendar.DAY_OF_WEEK);
//System.out.println(FirstDayOfWeek); //5(목요일)
c.add(Calendar.DATE, -FirstDayOfWeek + 1);
// 1일에서 첫날가리키는 5를빼고 1더함 (5앞의 4칸을 채우려고)
// -3 -2 -1 0 1(5번째)
// 같은 주에 있는 저번달 날짜도 표시하려고 !
// 7일 6주 나타내려고 42번
for (int i = 0; i < 42; i++) {
//System.out.println( c.getTime().toLocaleString() );
System.out.printf("%2d(%d)\t", c.get(Calendar.DATE), c.get(Calendar.MONTH)+1);
c.add(Calendar.DATE, 1);
if(i%7==6) System.out.println();
}
//GregorianCalendar c2 = new GregorianCalendar();
//c2.isLeapYear(year)
//GregorianCalendar c2 = (GregorianCalendar) c;
//c2.isLeapYear(year)
/* 예제
int year = 2021;
int month = 4;
Calendar sDay = Calendar.getInstance();
Calendar eDay = Calendar.getInstance();
//첫날
sDay.set(year, month-1, 1);
//마지막날
eDay.set(year, month, 1);
eDay.add(Calendar.DATE, -1);
//첫날 요일
int FirstDayOfWeek = sDay.get(Calendar.DAY_OF_WEEK);
//달의 마지막날 저장
int END_DAY = eDay.get(Calendar.DATE);
System.out.printf(" %d년 %d월\n", year, month);
System.out.println("SU MO TU WE TH FR SA");
for (int i = 1; i < FirstDayOfWeek; i++) {
System.out.print(" ");
}
for (int i = 1; i <= END_DAY; i++) {
System.out.printf(i<10? " %d ": "%d ",i);
if (FirstDayOfWeek++ % 7 == 0) System.out.println();
}
*/
}
}
'Java' 카테고리의 다른 글
[Java] 형식화 클래스 (~Format) (0) | 2021.07.17 |
---|---|
[Java] String 클래스 - 문자열 관련 메서드들 정리 (0) | 2021.07.17 |
[Java] 예외 처리 (Exception Handling) (0) | 2021.07.17 |
[Java] 추상화 / 인터페이스(Interface) / 익명 클래스(anonomous class) (0) | 2021.07.17 |
[Java] 클래스의 특징 - 다형성 / UpCasting, DownCasting (0) | 2021.07.17 |
Comments