자바-날짜 및 시간

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 문서를 참조하십시오.