util 의 값을 가지고
Date() : 현재 날짜를 date로 빼달라
Date(long date) : 해당 Timestamp 날짜를 반환
24 x 60 x60 = 8240000
-> utc 로 바꾸면 0시
우리나라 ) 국제 표준 + 9 임
oracle에 date라는 타입 있었음
-> oracle date 읽어드릴때) java의 sql.Date로 읽어라(DB의 데이터타입을 읽기)
(두번째 / 사선 쓰지말라는것)
-> 오라클에서는 날짜 구분 ( / , -) - 2가지
-> 자바 (-) 하이픈
DB에 읽는걸 읽어야 겠다 -> Sql쓰기
패키지 존재 이유 : 같은 이름의 클래스를 구분하기 위해서이다.
-> 오라클은 대소문자 구분 x : MI 따로 함
-> 오라클은
HH 12시각제
HH 24시각제 로 했음
-> util의 데이터를 (가로)안이 비어있을 수 있음(오늘시간이됨)
-> sql 써도 됨
-> 패턴을 전달하는 방법
-> 오전, 오후 표기 (hh 12시각제 씀)
-> (약식으로) 합쳐서 적는방법
-> 나머지는 그냥 넘어가도 됨
(ex03)java_sql 다시가서)
-> long itme도 timestamp임
-> 1000분의 1초까지 확인가능
-> 시간만 필요하다 , 날짜만 필요하다 등 원하는 일부 데이터만 가져다 쓸때
get + instance -> 객체가져오기
특정지역의 시간대를 가져와서 처리가능(현재는 우리나라 기준)
INSTANCE는 만들어두고 우리는 가져다쓰기만 하는것 -> 일종의 Getter임
-> 사람들이 숫자를 일일히 외위지x
-> 년도 필요하면 요청하면 됨
-> 클래스 변수
클래스 이름으로 부르려고 static
0~11월로 나오니까 주의하기
7월달에 31번째 날 -> Day_OF_MONTH
일요일 -> 시작 요일
-> 3시인지? 15시인지?
-> util의 date준비
-> 작년 이 맘때쯤의 timestamp값
-> new안하고 () 호출만 하면 나옴
calendar month는 숫자가 하나 적었지만 여기는 그럴 필요 x
-> 문자열로 전달해주는 아이도 있구나
기본패턴 ( 년도 - month - day) => 4자리, 2자리, 2자리
simpledatetype과 같은 역할을 함
localdatetime쓰면 data처럼 dateformat지정해서 형식도 제공할 수 있고 (모든걸 다 하고싶은 class)
sql. date와 sql.timestamp는 util.date의 자식들이다
오버라이드 해놓은 것
(java util클래스의 wrapper 클래스 타입으로 'sql.date'와 'sql.Timestamp'가 있음)
사용자 입력 정보에 초점을 맞추겠음
파일 입력 -> 따로 빼서 배울것
-> ★★ 입력 스트림(InputStream) 중요함!
-> close안해도 상관x
입력 : 직접 타이핑하라는 것
콘솔창은 웹화면에서 입력하므로 자바 클래스에서만 scanner 쓸것
<윤년의 조건>
1. 4로 나눠서 나머지 0 = 4의 배수
( 1988, 1992, 1996, ... 2020년 )
2.100으로 나눠서 나머지 0 이 아니어야 함 = 100의 배수는 윤년이 될 수 없음
-> y % 4 == 0 그리고 y % 100 != 0 (윤년)
또는
400으로 나눠서 나머지 0 = 400의 배수 -> 4, 100, 400의 배수
( 400, 800, 1200, 1600, 2000년)
-> y % 400 == 0
year 년 구하기
-> 2022년까지 구하기 ( y < year ) ( < 부등호 중요)
-> totalDay = 0부터 시작 (for문 증감식)
-> if문) 윤년은 366일로 365일보다 하루 더 많음
-> 만약 윤년이면 ) totalDay++
*윤년 (4로 나눈 나머지가 0이고 100으로 나눠 나머지가 0이 아님)
month 달 구하기
-> 윤년이면 29일로 변경(lastDay.set(2,29))
-> 1~6월달까지만 구하기( i < month )( < 부등호 중요)
-> 이번달 : totalDay 는 그냥 day(일수)만 더해주면 됨
week 요일 구하기
-> 계산된 일수(totalDay)를 7로 나눈 나머지가 (인덱스 번호)이다.
400(이미 100으로 나눠떨어지는애들을 포함함)
if(( year % 4 == 0 그리고 year % 100 이 아니면 윤년) 또는
year % 400 == 0 (연수가 4,100,400으로 나누어 떨어지는 해는 윤년)
2022년까지
1월 ~ 6월은 이미 지남
365일이 지났다고 할 수 있는 건 : 2022년까지
-> 2022년 365일 더해줌
문제는 366일인값이 있더라 (하루 더 있는날)
-> 100으로 나눠서 나머지가 0이 되면 안됨
(1) + (2) 합치면
-> 연도 이용한 몇일 지났는지 계산하기!
(작년 12월 31일까지 몇일 지났는지 계산됨)
-> 인덱스 번호랑 끝나는날이랑 맞춤(
-> 2월달의 종료날이 29일때도 있다
-> 전달된 년도가 윤년이면
-> 2월달은 29일까지로 수정한다음에
작년 12월 31일까지는 날짜 계산 끝나고 올해 개월수만 보면 됨
온전하게 지난간 달은 1~6월까지임
month -1 or month보다 작을떄까지만
-> totalday에 다 더해주기
-> 6월달까지만 만듦
인덱스 시작을 1로 해도 상관x
-> 28은 상황에 따라서 29로 바뀌어있을수도 있음
7월 31일이라고 하면 6월까지 몇일지났는지 계산 끝남
-> 이번달은 지난거 더해주면 됨(고려할 것 없음)
totalday 계산된 일수
-> %7값을 인덱스로 바꿔주면 index 번호가 나오면서 답이 될 수 있음
-> 보여주는게 아니라 출력만 하면됨
Stirng.format 불러서
month, day는 2자리로 맞춰주기