1. Date
클래스와 유닉스 시간
Java의 맨 처음부터 언어에는 시간과 날짜 작업을 위한 특수 클래스가 있었습니다 Date
. Date
시간이 지남에 따라 날짜 작업을 위한 여러 클래스가 더 등장했지만 프로그래머는 오늘날에도 계속 클래스를 사용합니다 .
매우 간단하고 편리하기 때문입니다. 그리고 프로그래머로서 실제 프로젝트에서 확실히 접하게 될 것입니다. 사용 여부는 귀하의 선택이지만 반드시 알아야합니다. 소중한 시간을 몇 분만 투자하세요.
수업이 그렇게 좋은 이유는 무엇입니까 Date
? 단순함.
이 클래스는 날짜 및 시간 정보 를 1970년 1월 1일 이후 경과된 밀리초 수로Date
저장합니다 . 이는 많은 밀리초이므로 유형을 사용하여 저장합니다.long
구체적으로 1970년 이후의 이유는 무엇입니까? 이것이 소위 유닉스 시간 입니다 . 모든 현대 운영 체제의 조상인 유닉스 운영 체제가 시간을 유지하는 방식입니다.
그러나 두 날짜 사이에 얼마나 많은 시간이 흘렀는지 매우 쉽게 알 수 있습니다. 한 날짜에서 다른 날짜를 빼면 가장 가까운 밀리초까지 날짜 사이의 시차를 얻을 수 있습니다.
다음은 클래스 작업의 몇 가지 유용한 예입니다 Date
.
2. 현재 날짜 얻기
현재 시간과 날짜를 얻으려면 간단히 Date
객체를 만드십시오. 각각의 새 개체는 생성된 시간을 저장합니다. 매우 간단해 보입니다.
Date current = new Date();
이 명령을 실행한 후 current
변수는 생성된 개체에 대한 참조를 저장하며 Date
내부적으로 생성 시간(1970년 1월 1일 이후 경과된 밀리초 수)을 저장합니다.
화면에 현재 날짜 표시하기
현재 날짜를 표시하려면 a) 새 Date
개체를 만들고 b) 메서드를 사용하여 화면에 인쇄합니다 System.out.println()
.
예:
암호 | 콘솔 출력 |
---|---|
|
|
콘솔 출력의 의미는 다음과 같습니다.
텍스트 | 해석 |
---|---|
목요일 _ | 목요일 |
2월 21일 | 2월 21일 |
14:01:34 | 시 : 분 : 초 |
EET | 시간대: 동유럽 표준시 |
2019년 | 년도 |
3. 특정 날짜 설정
현재 시간을 가져오는 방법을 알아냈지만 Date
다른 날짜나 시간을 저장하는 개체를 만드는 방법은 무엇입니까?
다시 말하지만 여기에서는 모든 것이 간단합니다. 특정 날짜를 설정하려면 다음과 같은 코드를 작성해야 합니다.
Date birthday = new Date(year, month, day);
모든 것이 간단하고 명백하지만 알아야 할 두 가지 뉘앙스가 있습니다.
- 연도는 1900년부터 계산해야 합니다.
- 월은 0부터 번호가 매겨집니다.
이것은 Unix 운영 체제의 또 다른 유산입니다. Unix에서 프로그래머는 두 자리 숫자를 사용하여 연도를 표시했습니다. 1977 대신에 그들은 단순히 77이라고 적었습니다. 따라서 1900에서 세면 77이 올바른 연도입니다.
예를 들어, 저는 1989년 3월 21일에 태어났습니다. 3월은 세 번째 달이므로 다음과 같이 작성해야 합니다.
암호 | 콘솔 출력 |
---|---|
|
|
월은 0부터 번호가 매겨지지만 일은 그렇지 않습니다. 조금 이상하죠?
우리는 진정한 프로그래머가 우세하고 0부터 날짜를 매겨야 한다고 생각합니다. 오, 이 순응자들 🙂
특정 시간 설정
특정 시간을 설정하는 것도 매우 간단합니다. 이를 위해서는 다음과 같은 명령문을 작성해야 합니다.
Date birthday = new Date(year, month, day, hour, minutes, seconds);
시간, 분, 초는 0부터 번호가 매겨집니다. 내부의 프로그래머가 안도의 한숨을 쉬게하십시오.
예:
암호 | 콘솔 출력 |
---|---|
|
|
시간을 12:15로 설정 하고 날짜를 2005년 6월 4일로 설정했습니다 . 이것은 프로그래머가 아닌 사람이 읽기에는 약간 어렵지만 예상대로 작동합니다.
4. 날짜 요소 작업
객체를 단순히 표시하는 것보다 더 많은 작업을 수행할 수 있습니다 Date
. 내부적으로 저장된 날짜의 개별 요소를 가져올 수 있는 메서드가 있습니다 .
방법 | 설명 |
---|---|
|
1900년을 기준으로 날짜의 연도를 반환합니다. |
|
날짜의 월을 반환합니다(월은 0부터 번호가 매겨짐). |
|
해당 월의 날짜를 반환합니다. |
|
요일을 반환 |
|
시간을 반환 |
|
분을 반환합니다. |
|
초를 반환 |
예:
암호 | 콘솔 출력 | 메모 |
---|---|---|
|
|
2005년 6월 요일 토요일 |
그런데 Date
개체를 사용하면 날짜의 개별 요소를 가져올 수 있을 뿐만 아니라 변경할 수도 있습니다.
방법 | 설명 |
---|---|
void setYear(int year) |
날짜의 연도를 변경합니다. 연도는 1900년을 기준으로 표시됩니다. |
void setMonth(int month) |
날짜의 월을 변경합니다(월은 0부터 번호가 매겨짐). |
void setDate(int date) |
해당 월의 날짜를 변경합니다. |
void setHours(int hours) |
시간 변경 |
void setMinutes(int minutes) |
의사록 변경 |
void setSeconds(int seconds) |
초 변경 |
5. 밀리초
앞서 말했듯이 Date
개체는 1970년 1월 1일 이후 경과된 밀리초 수를 저장합니다.
해당 번호가 필요한 경우 개체에서 가져올 수 있습니다 Date
.
long time = date.getTime();
이 getTime()
메서드는 개체 내부에 저장된 밀리초 수를 반환합니다 Date
.
밀리초 수를 얻을 수 있을 뿐만 아니라 기존 개체에서 해당 숫자를 변경할 수도 있습니다.
Date date = new Date();
date.setTime(1117876500000L);
그건 그렇고, Date
개체가 생성될 때 개체에 시간을 전달하여 이를 훨씬 더 간결하게 작성할 수 있습니다.
Date date = new Date(1117876500000L);
6. 날짜 비교
두 날짜를 비교하고 어느 날짜가 먼저인지 확인하려면 세 가지 옵션이 있습니다.
첫 번째 방법은 단순히 각각이 저장하는 밀리초 수를 비교하는 것입니다.
if (date1.getTime() < date2.getTime())
두 번째 방법은before()
객체 의 메서드를 사용하는 것입니다 Date
.
if (date1.before(date2))
다음과 같이 읽습니다. date1
앞에 오면 date2
...
세 번째 방법은after()
객체 의 메서드를 사용하는 것입니다 Date
.
if (date2.after(date1))
다음과 같이 읽습니다. if date2
is after date1
, then...
7. DateFormat
클래스
화면에 날짜를 표시했을 때 다음과 같은 내용이 표시되었음을 기억하십시오 Thu Feb 21 14:01:34 EET 2019
. . 모든 것이 올바른 것처럼 보이지만 형식은 일반 인간이 아닌 프로그래머에게 날짜가 표시되는 방식에 더 가깝습니다. 사용자를 위해 날짜를 더 명확하게 표시하고자 합니다. . Tuesday, February 21
_
그리고 연도 없이. 또는 필요한 경우 1년 단위로. 일반적으로 날짜를 다양한 방식으로 표시할 수 있기를 원합니다.
이를 위한 특별한 클래스가 있습니다: SimpleDateFormat
.
예:
암호 |
---|
|
콘솔 출력 |
|
프로그램이 무엇을 표시하는지 보십시오: Jun-04-2005
. 예전과는 전혀 다릅니다.
차이점은 개체 자체가 아니라 개체 에서 메서드를 Date
호출하여 얻은 특수 문자열을 표시했다는 것입니다 . 그러나 그것은 여기의 요점조차 아닙니다.format()
SimpleDateFormat
개체를 만들 때 SimpleDateFormat
문자열을 "MMM-dd-YYYY"
매개 변수로 전달했습니다. 콘솔 출력에서 궁극적으로 본 날짜 형식을 전달하는 것은 이 문자열입니다.
- MMM은 월 이름을 세 글자로 축약하여 표시함을 나타냅니다.
- dd는 해당 월의 날짜를 표시함을 나타냅니다.
- YYYY는 4자리 숫자를 사용하여 연도를 표시함을 나타냅니다.
월을 숫자로 출력하려면 대신 를 MMM
작성해야 MM
패턴이 생성됩니다 "MM-dd-YYYY"
. 화면 출력은06-04-2005
나중에 이 클래스에 대해 자세히 설명하겠습니다.
8. Date.parse
방법
클래스 Date
는 흥미롭고 유용한 다른 작업을 수행할 수 있습니다. 문자열에서 날짜를 가져올 수 있습니다. 또는 프로그래머가 말했듯이 문자열을 구문 분석할 수 있습니다.
parse()
이를 위한 특별한 방법이 있습니다 . 구문 분석은 다음과 같습니다.
Date date = new Date();
date.setTime( Date.parse("Jul 06 12:15:00 2019") );
그런데 이 코드는 더 간결하게 작성할 수 있습니다.
Date date = new Date("Jul 06 12:15:00 2019");
문자열 구문 분석 에 대해서는 다른 단원에서 자세히 살펴보겠습니다 .