자바-날짜 및 시간
Java는 Date 수업 가능 java.util 패키지에서이 클래스는 현재 날짜와 시간을 캡슐화합니다.
Date 클래스는 다음 표와 같이 두 개의 생성자를 지원합니다.
Sr. 아니. | 생성자 및 설명 |
---|---|
1 | Date( ) 이 생성자는 현재 날짜 및 시간으로 개체를 초기화합니다. |
2 | Date(long millisec) 이 생성자는 1970 년 1 월 1 일 자정 이후 경과 된 밀리 초 수와 같은 인수를받습니다. |
다음은 날짜 클래스의 메서드입니다.
Sr. 아니. | 방법 및 설명 |
---|---|
1 | boolean after(Date date) 호출하는 Date 객체에 date로 지정된 날짜보다 이후의 날짜가 포함되어 있으면 true를 반환하고, 그렇지 않으면 false를 반환합니다. |
2 | boolean before(Date date) 호출하는 Date 객체에 date로 지정된 날짜보다 이전 날짜가 포함되어 있으면 true를 반환하고, 그렇지 않으면 false를 반환합니다. |
삼 | Object clone( ) 호출하는 Date 개체를 복제합니다. |
4 | int compareTo(Date date) 호출하는 객체의 값을 날짜의 값과 비교합니다. 값이 같으면 0을 반환합니다. 호출 객체가 날짜보다 이전이면 음수 값을 반환합니다. 호출하는 객체가 날짜 이후 인 경우 양수 값을 반환합니다. |
5 | int compareTo(Object obj) obj가 Date 클래스 인 경우 compareTo (Date)와 동일하게 작동합니다. 그렇지 않으면 ClassCastException이 발생합니다. |
6 | boolean equals(Object date) 호출하는 Date 객체에 date로 지정된 것과 동일한 시간 및 날짜가 포함되어 있으면 true를 반환하고, 그렇지 않으면 false를 반환합니다. |
7 | long getTime( ) 1970 년 1 월 1 일 이후 경과 된 밀리 초 수를 반환합니다. |
8 | int hashCode( ) 호출하는 객체의 해시 코드를 반환합니다. |
9 | void setTime(long time) 1970 년 1 월 1 일 자정부터 경과 된 시간 (밀리 초)을 나타내는 시간으로 지정된 시간과 날짜를 설정합니다. |
10 | String toString( ) 호출하는 Date 객체를 문자열로 변환하고 결과를 반환합니다. |
현재 날짜 및 시간 가져 오기
이것은 Java에서 현재 날짜와 시간을 얻는 매우 쉬운 방법입니다. toString () 메서드 와 함께 간단한 Date 객체를 사용하여 다음과 같이 현재 날짜와 시간을 인쇄 할 수 있습니다.
예
import java.util.Date;
public class DateDemo {
public static void main(String args[]) {
// Instantiate a Date object
Date date = new Date();
// display time and date using toString()
System.out.println(date.toString());
}
}
이것은 다음 결과를 생성합니다-
산출
on May 04 09:51:52 CDT 2009
날짜 비교
다음은 두 날짜를 비교하는 세 가지 방법입니다.
getTime ()을 사용하여 두 객체에 대해 1970 년 1 월 1 일 자정 이후 경과 된 밀리 초 수를 얻은 다음이 두 값을 비교할 수 있습니다.
before (), after () 및 equals () 메서드를 사용할 수 있습니다. 예를 들어, 해당 월의 12 일이 18 일 이전이므로 new Date (99, 2, 12) .before (new Date (99, 2, 18))는 true를 반환합니다.
Comparable 인터페이스에 의해 정의되고 Date에 의해 구현되는 compareTo () 메서드를 사용할 수 있습니다.
SimpleDateFormat을 사용한 날짜 형식
SimpleDateFormat은 로케일 구분 방식으로 날짜를 형식화하고 구문 분석하기위한 구체적인 클래스입니다. SimpleDateFormat을 사용하면 날짜-시간 형식화에 대한 사용자 정의 패턴을 선택하여 시작할 수 있습니다.
예
import java.util.*;
import java.text.*;
public class DateDemo {
public static void main(String args[]) {
Date dNow = new Date( );
SimpleDateFormat ft =
new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz");
System.out.println("Current Date: " + ft.format(dNow));
}
}
이것은 다음 결과를 생성합니다-
산출
Current Date: Sun 2004.07.18 at 04:14:09 PM PDT
간단한 DateFormat 형식 코드
시간 형식을 지정하려면 시간 패턴 문자열을 사용하십시오. 이 패턴에서 모든 ASCII 문자는 패턴 문자로 예약되어 있으며 다음과 같이 정의됩니다.
캐릭터 | 기술 | 예 |
---|---|---|
지 | 시대 지정자 | 기원 후 |
와이 | 4 자리 연도 | 2001 년 |
미디엄 | 년의 달 | 7 월 또는 07 |
디 | 월의 일 | 10 |
h | 오전 / 오후 시간 (1 ~ 12) | 12 |
H | 하루 중 시간 (0 ~ 23) | 22 |
미디엄 | 분 | 30 |
에스 | 분에 초 | 55 |
에스 | 밀리 초 | 234 |
이자형 | 요일 | 화요일 |
디 | 연중 일 | 360 |
에프 | 매월 요일 | 2 (7 월 둘째 수요일) |
w | 연중 주 | 40 |
W | 한 달의 주 | 1 |
ㅏ | 오전 / 오후 마커 | 오후 |
케이 | 하루 중 시간 (1 ~ 24) | 24 |
케이 | 오전 / 오후 시간 (0 ~ 11) | 10 |
지 | 시간대 | 동부 표준시 |
' | 텍스트를 보려면 이스케이프 | 구분자 |
" | 작은 따옴표 | ` |
printf를 사용한 날짜 형식
날짜 및 시간 형식화는 다음을 사용하여 매우 쉽게 수행 할 수 있습니다. printf방법. 다음으로 시작하는 두 글자 형식을 사용합니다.t 다음 코드와 같이 표의 문자 중 하나로 끝납니다.
예
import java.util.Date;
public class DateDemo {
public static void main(String args[]) {
// Instantiate a Date object
Date date = new Date();
// display time and date
String str = String.format("Current Date/Time : %tc", date );
System.out.printf(str);
}
}
이것은 다음 결과를 생성합니다-
산출
Current Date/Time : Sat Dec 15 16:37:57 MST 2012
각 부분의 형식을 지정하기 위해 날짜를 여러 번 제공해야한다면 조금 어리석은 일입니다. 따라서 형식 문자열은 형식화 할 인수의 인덱스를 나타낼 수 있습니다.
인덱스는 % 바로 뒤에 와야하며 $로 종료되어야합니다.
예
import java.util.Date;
public class DateDemo {
public static void main(String args[]) {
// Instantiate a Date object
Date date = new Date();
// display time and date
System.out.printf("%1$s %2$tB %2$td, %2$tY", "Due date:", date);
}
}
이것은 다음 결과를 생성합니다-
산출
Due date: February 09, 2004
또는 <플래그를 사용할 수 있습니다. 이전 형식 사양과 동일한 인수를 다시 사용해야 함을 나타냅니다.
예
import java.util.Date;
public class DateDemo {
public static void main(String args[]) {
// Instantiate a Date object
Date date = new Date();
// display formatted date
System.out.printf("%s %tB %<te, %<tY", "Due date:", date);
}
}
이것은 다음 결과를 생성합니다-
산출
Due date: February 09, 2004
날짜 및 시간 변환 문자
캐릭터 | 기술 | 예 |
---|---|---|
씨 | 완전한 날짜와 시간 | Mon May 04 09:51:52 CDT 2009 |
에프 | ISO 8601 날짜 | 2004-02-09 |
디 | 미국 형식 날짜 (월 / 일 / 년) | 2004 년 2 월 9 일 |
티 | 24 시간 | 18:05:19 |
아르 자형 | 12 시간 | 오후 6:05:19 |
아르 자형 | 24 시간 시간, 초 없음 | 18:05 |
와이 | 4 자리 연도 (앞에 0이 있음) | 2004 년 |
와이 | 연도의 마지막 두 자리 (앞에 0이 있음) | 04 |
씨 | 연도의 처음 두 자리 (앞에 0이 있음) | 20 |
비 | 전체 월 이름 | 이월 |
비 | 축약 된 월 이름 | 2 월 |
미디엄 | 두 자리 월 (앞에 0이 있음) | 02 |
디 | 두 자리 일 (앞에 0이 있음) | 03 |
이자형 | 두 자리 일 (앞에 0이 없음) | 9 |
ㅏ | 평일 전체 이름 | 월요일 |
ㅏ | 축약 된 요일 이름 | 월 |
제이 | 세 자리 연도 (앞에 0이 있음) | 069 |
H | 00에서 23 사이의 두 자리 시간 (앞에 0이 있음) | 18 |
케이 | 0에서 23 사이의 두 자리 시간 (앞에 0이 없음) | 18 |
나는 | 01과 12 사이의 두 자리 시간 (앞에 0이 있음) | 06 |
엘 | 1에서 12 사이의 두 자리 시간 (앞에 0이 없음) | 6 |
미디엄 | 두 자리 분 (앞에 0이 있음) | 05 |
에스 | 2 자리 초 (선행 0 포함) | 19 |
엘 | 3 자리 밀리 초 (선행 0 포함) | 047 |
엔 | 9 자리 나노초 (선행 0 포함) | 047000000 |
피 | 아침 또는 오후 대문자 표시 | 오후 |
피 | 아침 또는 오후 소문자 표시 | 오후 |
지 | GMT에서 RFC 822 숫자 오프셋 | -0800 |
지 | 시간대 | PST |
에스 | 1970-01-01 00:00:00 GMT 이후 초 | 1078884319 |
큐 | 1970-01-01 00:00:00 GMT 이후의 밀리 초 | 1078884319047 |
날짜 및 시간과 관련된 다른 유용한 클래스가 있습니다. 자세한 내용은 Java Standard 문서를 참조하십시오.
문자열을 날짜로 구문 분석
SimpleDateFormat 클래스에는 주어진 SimpleDateFormat 객체에 저장된 형식에 따라 문자열을 구문 분석하려고하는 parse ()와 같은 몇 가지 추가 메서드가 있습니다.
예
import java.util.*;
import java.text.*;
public class DateDemo {
public static void main(String args[]) {
SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd");
String input = args.length == 0 ? "1818-11-11" : args[0];
System.out.print(input + " Parses as ");
Date t;
try {
t = ft.parse(input);
System.out.println(t);
} catch (ParseException e) {
System.out.println("Unparseable using " + ft);
}
}
}
위 프로그램의 샘플 실행은 다음 결과를 생성합니다.
산출
1818-11-11 Parses as Wed Nov 11 00:00:00 EST 1818
잠시 자
1 밀리 초부터 컴퓨터 수명까지 원하는 기간 동안 잠자기 가능합니다. 예를 들어, 다음 프로그램은 3 초 동안 수면을 취합니다.
예
import java.util.*;
public class SleepDemo {
public static void main(String args[]) {
try {
System.out.println(new Date( ) + "\n");
Thread.sleep(5*60*10);
System.out.println(new Date( ) + "\n");
} catch (Exception e) {
System.out.println("Got an exception!");
}
}
}
이것은 다음 결과를 생성합니다-
산출
Sun May 03 18:04:41 GMT 2009
Sun May 03 18:04:51 GMT 2009
경과 시간 측정
때때로 특정 시점을 밀리 초 단위로 측정해야 할 수도 있습니다. 다시 한번 위의 예를 다시 작성해 봅시다.
예
import java.util.*;
public class DiffDemo {
public static void main(String args[]) {
try {
long start = System.currentTimeMillis( );
System.out.println(new Date( ) + "\n");
Thread.sleep(5*60*10);
System.out.println(new Date( ) + "\n");
long end = System.currentTimeMillis( );
long diff = end - start;
System.out.println("Difference is : " + diff);
} catch (Exception e) {
System.out.println("Got an exception!");
}
}
}
이것은 다음 결과를 생성합니다-
산출
Sun May 03 18:16:51 GMT 2009
Sun May 03 18:16:57 GMT 2009
Difference is : 5993
GregorianCalendar 클래스
GregorianCalendar는 익숙한 일반 그레고리력 달력을 구현하는 Calendar 클래스의 구체적인 구현입니다. 이 튜토리얼에서는 Calendar 클래스에 대해 논의하지 않았으며 이에 대한 표준 Java 문서를 찾을 수 있습니다.
그만큼 getInstance( )Calendar 메소드는 기본 로케일 및 시간대의 현재 날짜 및 시간으로 초기화 된 GregorianCalendar를 리턴합니다. GregorianCalendar는 AD와 BC의 두 필드를 정의합니다. 이들은 그레고리력으로 정의 된 두 시대를 나타냅니다.
GregorianCalendar 객체에 대한 여러 생성자가 있습니다.
Sr. 아니. | 생성자 및 설명 |
---|---|
1 | GregorianCalendar() 기본 로케일이있는 기본 시간대의 현재 시간을 사용하여 기본 GregorianCalendar를 구성합니다. |
2 | GregorianCalendar(int year, int month, int date) 기본 로케일을 사용하는 기본 시간대에 설정된 지정된 날짜로 GregorianCalendar를 구성합니다. |
삼 | GregorianCalendar(int year, int month, int date, int hour, int minute) 기본 로케일을 사용하는 기본 시간대에 대해 설정된 지정된 날짜 및 시간으로 GregorianCalendar를 구성합니다. |
4 | GregorianCalendar(int year, int month, int date, int hour, int minute, int second) 기본 로케일을 사용하는 기본 시간대에 대해 설정된 지정된 날짜 및 시간으로 GregorianCalendar를 구성합니다. |
5 | GregorianCalendar(Locale aLocale) 제공된 로케일을 사용하는 기본 시간대의 현재 시간을 기반으로 GregorianCalendar를 구성합니다. |
6 | GregorianCalendar(TimeZone zone) 기본 로케일로 지정된 시간대의 현재 시간을 기반으로 GregorianCalendar를 구성합니다. |
7 | GregorianCalendar(TimeZone zone, Locale aLocale) 제공된 로케일로 지정된 시간대의 현재 시간을 기반으로 GregorianCalendar를 구성합니다. |
다음은 GregorianCalendar 클래스에서 제공하는 몇 가지 유용한 지원 방법 목록입니다.
Sr. 아니. | 방법 및 설명 |
---|---|
1 | void add(int field, int amount) 달력의 규칙에 따라 지정된 (서명 된) 시간을 주어진 시간 필드에 추가합니다. |
2 | protected void computeFields() UTC를 밀리 초로 시간 필드 값으로 변환합니다. |
삼 | protected void computeTime() 달력 재정의 시간 필드 값을 밀리 초 단위의 UTC로 변환합니다. |
4 | boolean equals(Object obj) 이 GregorianCalendar를 오브젝트 참조와 비교합니다. |
5 | int get(int field) 주어진 시간 필드에 대한 값을 가져옵니다. |
6 | int getActualMaximum(int field) 현재 날짜에서이 필드가 가질 수있는 최대 값을 반환합니다. |
7 | int getActualMinimum(int field) 현재 날짜에서이 필드가 가질 수있는 최소값을 반환합니다. |
8 | int getGreatestMinimum(int field) 다양한 경우 주어진 필드에 대해 가장 높은 최소값을 반환합니다. |
9 | Date getGregorianChange() 그레고리력 변경 날짜를 가져옵니다. |
10 | int getLeastMaximum(int field) 다양한 경우 주어진 필드에 대해 가장 낮은 최대 값을 반환합니다. |
11 | int getMaximum(int field) 주어진 필드의 최대 값을 반환합니다. |
12 | Date getTime() 이 캘린더의 현재 시간을 가져옵니다. |
13 | long getTimeInMillis() 이 캘린더의 현재 시간을 길게 가져옵니다. |
14 | TimeZone getTimeZone() 시간대를 가져옵니다. |
15 | int getMinimum(int field) 주어진 필드의 최소값을 반환합니다. |
16 | int hashCode() hashCode를 재정의합니다. |
17 | boolean isLeapYear(int year) 주어진 연도가 윤년인지 확인합니다. |
18 | void roll(int field, boolean up) 더 큰 필드를 변경하지 않고 주어진 시간 필드에서 단일 시간 단위를 더하거나 뺍니다 (위 / 아래). |
19 | void set(int field, int value) 주어진 값으로 시간 필드를 설정합니다. |
20 | void set(int year, int month, int date) 년, 월 및 날짜 필드의 값을 설정합니다. |
21 | void set(int year, int month, int date, int hour, int minute) 년, 월, 일,시 및 분 필드의 값을 설정합니다. |
22 | void set(int year, int month, int date, int hour, int minute, int second) 년, 월, 일,시, 분 및 초 필드의 값을 설정합니다. |
23 | void setGregorianChange(Date date) GregorianCalendar 변경 날짜를 설정합니다. |
24 | void setTime(Date date) 주어진 날짜로이 달력의 현재 시간을 설정합니다. |
25 | void setTimeInMillis(long millis) 주어진 long 값에서이 달력의 현재 시간을 설정합니다. |
26 | void setTimeZone(TimeZone value) 주어진 시간대 값으로 시간대를 설정합니다. |
27 | String toString() 이 달력의 문자열 표현을 반환합니다. |
예
import java.util.*;
public class GregorianCalendarDemo {
public static void main(String args[]) {
String months[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep",
"Oct", "Nov", "Dec"};
int year;
// Create a Gregorian calendar initialized
// with the current date and time in the
// default locale and timezone.
GregorianCalendar gcalendar = new GregorianCalendar();
// Display current time and date information.
System.out.print("Date: ");
System.out.print(months[gcalendar.get(Calendar.MONTH)]);
System.out.print(" " + gcalendar.get(Calendar.DATE) + " ");
System.out.println(year = gcalendar.get(Calendar.YEAR));
System.out.print("Time: ");
System.out.print(gcalendar.get(Calendar.HOUR) + ":");
System.out.print(gcalendar.get(Calendar.MINUTE) + ":");
System.out.println(gcalendar.get(Calendar.SECOND));
// Test if the current year is a leap year
if(gcalendar.isLeapYear(year)) {
System.out.println("The current year is a leap year");
}else {
System.out.println("The current year is not a leap year");
}
}
}
이것은 다음 결과를 생성합니다-
산출
Date: Apr 22 2009
Time: 11:25:27
The current year is not a leap year
Calendar 클래스에서 사용 가능한 전체 상수 목록은 표준 Java 문서를 참조하십시오.