Latest web development tutorials

자바 날짜 시간

날짜 java.util의 패키지는 현재 날짜 및 시간을 캡슐화하는 클래스를 제공한다. Date 클래스 Date 객체의 인스턴스를 두 개의 생성자를 제공합니다.

최초의 생성자는 객체를 초기화하는 현재 날짜 및 시간을 사용한다.

Date( )

두 번째 생성자는 1 월 1 일, 1970 년 이후 밀리 초 단위로하는 매개 변수를 받아들입니다.

Date(long millisec)

Date 객체를 만든 후, 다음과 같은 메서드를 호출 할 수 있습니다.

아니오. 방법 및 설명
(1) 후 부울 (날짜 일)
지정된 날짜 이후의 날짜 객체가 true를 돌려주는 경우이 메서드를 호출 할 경우, 그렇지 않으면 false를 반환합니다.
전에 부울 (날짜 일)
지정된 날짜 이전 날짜 객체가 true를 돌려주는 경우이 메서드를 호출 할 경우, 그렇지 않으면 false를 반환합니다.
3 개체 복제 ()
이 객체의 복사본을 반환합니다.
4 INT은 compareTo (날짜 일)
이 메소드가 불려 비교하면 지정된 날짜로 Date 객체. 두 사람이 동일한 경우 0을 돌려줍니다. 지정된 날짜가 음수를 반환하기 전에 객체를 호출합니다. 지정된 날짜가 양수를 반환 한 후 개체를 호출합니다.
(5) INT은 compareTo (개체 OBJ)
obj가 일 유형 인 경우, 동작은 compareTo (일)에 상당한다. 그렇지 않은 경우는 ClassCastException이 발생합니다.
6 부울 등호 (개체 일자)
이 메서드를 호출하고 true를 반환, 그렇지 않으면 false를 반환 할 때 Date 객체는 지정된 날짜와 동일합니다.
(7) 긴 다음 getTime ()
그것은 년 1 월 1 일이 Date 객체가 나타내는 1970 0시 0 분 0 초 GMT 이후의 밀리 초 수를 반환합니다.
8 INT의 해시 코드 ()
이 오브젝트의 해시 코드 값을 돌려줍니다.
9 무효 setTime (긴 시간)

1970 0시 0 분 0 초 그리니치 표준시 (밀리 초) 나중에 자기 1월 1일은 시간과 날짜를 설정합니다.
(10) 문자열 toString ()
전환 날짜 String 객체의 표현과는 문자열을 반환합니다.

현재 날짜와 시간을 얻기

자바는 현재 날짜를 취득 시간이 매우 간단하고, 다음과 같이 현재 날짜와 시간을 인쇄 날짜 오브젝트, toString () Methods를 사용합니다 :

import java.util.Date;
  
public class DateDemo {
   public static void main(String args[]) {
       // 初始化 Date 对象
       Date date = new Date();
        
       // 使用 toString() 函数显示日期时间
       System.out.println(date.toString());
   }
}

다음과 같은 결과를 컴파일 위의 예는 다음과 같습니다

Mon May 04 09:51:52 CDT 2013

날짜 비교

자바는 다음 두 날짜를 비교하는 세 가지 방법을 사용하여

  • 다음 두 값을 비교, (이후의 밀리 초 수를 통해 1970년 1월 1일을) 두 날짜를 얻기 위해 다음 getTime () 메서드를 사용합니다.
  • (), 후 ()와 같음 전에 ()를 사용합니다. 예를 들어, 12 (18)보다 한 달 이전, 새로운 날짜 (99, 2, 12) .before (새 날짜 (99, 2, 18)) true를 돌려줍니다.
  • Comparable 인터페이스에 의해 정의된다 사용은 compareTo () 메소드는, Date 클래스는이 인터페이스를 구현합니다.

형식 날짜에 사용하여 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 문자 패턴은 문자가 정의로 예약되어

편지 기술
G 시대 마크 AD
Y 4 년 2,001
M 7월 또는 07
월 일 (10)
시간 AM / PM (1 ~ 12) 시간 형식 (12)
H 하루의 시간 (0 23까지) (22)
m 시간 (분) (30)
에스 (55)
에스 밀리 초 (234)
E 요일 화요일
올해의 날 360
F 주 월의 첫 번째 주 2 (7 월 둘째 수요일)
w 올해의 처음 몇 주 (40)
W 매월 첫 번째 주 (1)
AM / PM 표시 PM
케이 하루의 시간 (1 24까지) (24)
케이 AM / PM (0 ~ 11) 시간 형식 (10)
Z 시간대 동부 표준시
' 텍스트 구분 기호 구분
" 작은 따옴표 `

사용의 printf 형식 날짜

printf의 방법은 쉽게 시간과 날짜를 포맷 할 수 있습니다. 두 문자 형식을 사용, 그것은 t에와 편지의 끝에 다음 표에 시작됩니다. 예를 들면 :

import java.util.Date;

public class DateDemo {

  public static void main(String args[]) {
     // 初始化 Date 对象
     Date date = new Date();

     // 使用toString()显示日期和时间
     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[]) {
       // 初始化 Date 对象
       Date date = new Date();
        
       // 使用toString()显示日期和时间
       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[]) {
       // 初始化 Date 对象
       Date date = new Date();
        
       // 显示格式化时间
       System.out.printf("%s %tB %<te, %<tY", 
                         "Due date:", date);
   }
}

다음과 같은 결과를 컴파일 위의 예는 다음과 같습니다

Due date: February 09, 2004

날짜와 시간 변환 문자

문자 기술
C 전체 날짜 및 시간 월 5월 4일 중부 서머 타임 09시 51분 52초 2009
F ISO 8601 형식의 날짜 2004년 2월 9일
미국의 날짜 형식 (월 / 일 / 년) 2004년 2월 9일
시간 24시간 18시 5분 19초
연구 12 시간 시간 오후 6시 5분 19초
R 24 시간 (초)을 포함하지 않는 18시 5분
Y 4 년 (과 0을 선도) 2,004
Y 이년 후 (과 0을 선도) 04
C 2 년 전 (과 0을 선도) (20)
B 전체 월 이름 2월
B 월 약어 2월
N 2개월 (0을 선도) 02
이일 (0을 선도) 03
전자 이일 (0 선도 제외) 9
주 이름 월요일
짧은 주
J 삼년 (0을 선도) 069
H (앞에 0 포함) 2 시간 00-23 (18)
케이 (선도 0 제외) 2 시간 0-23 (18)
나는 (앞에 0 포함) 2 시간 01-12 06
리터 (선도 0 제외) 2 시간 12 6
M 이분 (0을 선도) 05
에스 이초 (0을 선도) (19)
L (A 제로를 선도) 3 밀리 047
N (A 제로를 선도) 9 NS 047000000
국기의 오후에 대문자 PM
소문자 로고의 오후에 오후
Z RFC 822 디지털에 GMT로부터의 오프셋 (offset) -0800
Z 시간대 PST
에스 1970-01-01 00:00:00 GMT을 기점으로 경과 초 1,078,884,319
1970-01-01 0시 0 분 0 초 그리니치 표준시 센트 멋진 이후 1078884319047

다른 유용한 날짜와 클래스의 시간이 있습니다. 자세한 내용은, 당신은 자바 표준 문서를 참조 할 수 있습니다.


한 번에 문자열을 구문 분석

SimpleDateFormat의 클래스는 문자열을 구문 분석 주어진 SimpleDateFormat의 객체 저장 형식을 따르려고 몇 가지 추가 방법, 특히 구문 분석 ()를 보유하고 있습니다. 예를 들면 :

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); 
      }
   }
}

다음과 같은 결과를 컴파일 위의 예는 다음과 같습니다

$ java DateDemo
1818-11-11 Parses as Wed Nov 11 00:00:00 GMT 1818
$ java DateDemo 2007-12-01
2007-12-01 Parses as Sat Dec 01 00:00:00 GMT 2007

자바 휴면 (잠)

CPU 사용량이 목적은 단독으로, 현재의 thread를 계속 기회에 실행의 다른 스레드를 시간을두고하는 과정에서 얻어진 CPU 자원을 차지하기 위해 수 있도록 수면 (), 정체 상태로 현재 스레드 (블록 현재의 thread)를 만든다.

당신은 시간 또는 컴퓨터의 삶의 어느 프로그램 수면 1 밀리 긴 기간을하도록 할 수 있습니다. 예를 들어, 다음 프로그램이 3 초 잠 것

import java.util.*;
  
public class SleepDemo {
   public static void main(String args[]) {
      try { 
         System.out.println(new Date( ) + "\n"); 
         Thread.sleep(1000*3);   // 休眠3秒
         System.out.println(new Date( ) + "\n"); 
      } catch (Exception e) { 
          System.out.println("Got an exception!"); 
      }
   }
}

다음과 같은 결과를 컴파일 위의 예는 다음과 같습니다

Thu Sep 17 10:20:30 CST 2015

Thu Sep 17 10:20:33 CST 2015

측정 시간

다음은 (밀리 초) 시간 간격을 측정하는 방법을 보여줍니다 예입니다 :

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!");
      }
   }
}

다음과 같은 결과를 컴파일 위의 예는 다음과 같습니다

Fri Jan 08 09:48:47 CST 2016

Fri Jan 08 09:48:50 CST 2016

Difference is : 3019

클래스 일정

우리는 어떻게 날짜 플러스 또는 마이너스의이 부분에서 우리가 할 수있는? 지금 포맷하고 날짜 개체를 만들 수 있지만 우리가 설정하는 방법 및 시간, 일, 또는 분으로 그 날짜 데이터의 특정 부분을 검색 할 수 있습니다 ? 대답은 일정 범주를 사용하는 것이다.

Date 클래스 달력 클래스보다뿐만 아니라, Date 클래스 단지보다 구현에 많은 강력한 기능을 제공합니다.

일정 수준의 실제 사용에서 객체의 특정 서브 클래스를 구현하는 추상 클래스 오브젝트의 생성은 프로그래머 만 getInstance 메소드를 사용하여 생성 될 필요에 투명하다.

현재 시스템 날짜를 나타내는 Calendar 객체를 생성

Calendar c = Calendar.getInstance();//默认是当前日期

Calendar 오브젝트 지정된 날짜 만들기

일정 클래스는 특정 시간을 나타냅니다 사용, 먼저 Calendar 객체를 생성해야하고 완료하는 개체 날짜 매개 변수를 설정합니다.

//创建一个代表2009年6月12日的Calendar对象
Calendar c1 = Calendar.getInstance();
c1.set(2009, 6 - 1, 12);

달력 클래스 객체 필드 유형

이러한 상수에서 사용하는 달력 유형이 다른 의미를 나타내고, 많은 생각이 클래스는 실제로 JDK 내에서 사용되는

상수 기술
로서 Calendar.YEAR
Calendar.MONTH
Calendar.DATE 날짜
Calendar.DAY_OF_MONTH 위 필드의 의미에 날짜와 동일
Calendar.HOUR 12 시간 시간
Calendar.HOUR_OF_DAY 24 시간 시간
Calendar.MINUTE
Calendar.SECOND
Calendar.DAY_OF_WEEK의 요일

설정 달력 클래스 객체 정보

설정 설정

예를 들면 :

Calendar c1 = Calendar.getInstance();

전화 :

public final void set(int year,int month,int date)
c1.set(2009, 6 - 1, 12);//把Calendar对象c1的年月日分别设这为:2009、6、12

필드 타입 설정을 사용하여

경우에만하면 필드, 값 날짜 등은 다음과 같은 방법을 사용하여 설정할 수 있습니다 설정 :

public void set(int field,int value)

날짜 개체 (C1)는 10로 설정되어 나타냅니다, 다른 모든 값이 다시 계산됩니다

c1.set(Calendar.DATE,10);

개체가 올해 C1 2008로 설정되어 나타냅니다, 다른 모든 값이 다시 계산됩니다

c1.set(Calendar.YEAR,2008);

다른 필드 속성의 의미는 그렇게 설정

설정 추가

Calendar c1 = Calendar.getInstance();

목표 날짜 플러스 10 (C1)가, (C1)는 10 일 날짜 이후로 표현된다, 다른 모든 값이 다시 계산됩니다

c1.add(Calendar.DATE, 10);

목표 날짜 마이너스 10 (C1)는, C1은 10 일 전 날짜로 표시됩니다, 다른 모든 값이 다시 계산됩니다

<pre>c1.add(Calendar.DATE, -10);

그래서 다른 필드 속성을 의미 추가

달력 클래스 객체 정보를 얻을 수

Calendar c1 = Calendar.getInstance();
// 获得年份
int year = c1.get(Calendar.YEAR);
// 获得月份
int month = c1.get(Calendar.MONTH) + 1;
// 获得日期
int date = c1.get(Calendar.DATE);
// 获得小时
int hour = c1.get(Calendar.HOUR_OF_DAY);
// 获得分钟
int minute = c1.get(Calendar.MINUTE);
// 获得秒
int second = c1.get(Calendar.SECOND);
// 获得星期几(注意(这个与Date类是不同的):1代表星期日、2代表星期1、3代表星期二,以此类推)
int day = c1.get(Calendar.DAY_OF_WEEK);

GregorianCalendar를 클래스

달력 클래스는 그레고리오 달력, GregorianCalendar를 일정 클래스는 구체적인 구현 구현합니다.

의 getInstance () 메소드는 현재 로케일 및 시간대와 기본을 반환의 일정 해 GregorianCalendar 객체를 초기화. AD와 BC : GregorianCalendar를 두 개의 필드를 정의합니다. 이 두 개의 달력이 시대를 정의 나타냅니다.

아래에 나열된 몇 해 GregorianCalendar 객체 생성자 있습니다 :

아니오. 생성자 및 설명
(1) GregorianCalendar를 ()
당신이 가지고있는 경우 기본 로케일의 기본 시간대는 기본 GregorianCalendar를 전류를 구축합니다.
GregorianCalendar를 (INT 년, INT 월, INT 일)
당신이 가지고있는 경우 기본 로케일의 기본 영역은 지정된 날짜 세트를 사용하여 GregorianCalendar를 구축
3 GregorianCalendar를 (INT 년, INT 월, INT 날짜, INT 시간, INT 분)
GregorianCalendar를에 기본 로케일의 기본 시간대를 갖는 지정된 날짜 및 시간 설정을 구성합니다.
4 GregorianCalendar를 (INT 년, INT 월, INT 날짜, INT 시간, INT 분, INT 초)
GregorianCalendar를에 기본 로케일의 기본 시간대를 갖는 지정된 날짜 및 시간 설정을 구성합니다.
(5) GregorianCalendar를 (로케일 aLocale)
사용자가 설정해야하는 경우 기본 로케일 영역은 GregorianCalendar를 기반으로 현재 시간을 구축합니다.
6 GregorianCalendar를 (시간대 구역)
기본 로케일 지정된 타임 존의 현재 시각에 근거 해 GregorianCalendar를 구축합니다.
(7) GregorianCalendar를 (시간대 영역, 로케일 aLocale)
지정된 로케일 지정된 타임 존의 현재 시각에 근거 해 GregorianCalendar를 구축합니다.

다음 해 GregorianCalendar 클래스의 목록을 몇 가지 유용한 방법을 제공합니다 :

아니오. 방법 및 설명
(1) 무효 추가 (INT 필드, INT 금액 )
지정된 일정 규칙에 따라 지정된 달력 필드에 시간의 양을 (서명).
보호 무효 computeFields ()
UTC MS 변환 시간 임계치
3 보호 무효 computeTime ()
일정을 취재, 밀리 초 단위로 시간 필드 값을 UTC로 변환
4 메소드의 개요 boolean equals (Object obj)
이 GregorianCalendar가 지정된 Object와 비교합니다.
(5) INT 얻을 수 (INT 필드)
지정된 필드의 시간 값을 가져옵니다
6 INT getActualMaximum (INT 필드)
현재 날짜, 특정 필드의 최대 값을 반환
(7) INT getActualMinimum (INT 필드)
현재 날짜, 특정 필드의 최소값을 반환
8 INT getGreatestMinimum (INT 필드)
GregorianCalendar를 지정된 달력 필드의 최대 최소치를 돌려줍니다.
9 날짜 getGregorianChange ()
그레고리 변경 날짜를 가져옵니다.
(10) INT getLeastMaximum (INT 필드)
리턴 지정된 달력 필드의 최소 최대 값이 GregorianCalendar 인스턴스로
(11) INT으로 getMaximum (INT 필드)
최대 달력 필드 주어진 해 GregorianCalendar 인스턴스를 돌려줍니다.
(12) 날짜 다음 getTime ()
현재 달력 시간을 가져옵니다.
(13) 긴 getTimeInMillis ()
현재 시간의 긴 정수 표현으로 달력을 가져옵니다
(14) 시간대 getTimeZone의 ()
시간대를 가져옵니다.
(15) INT는 getMinimum (INT 필드)
위로 소정 필드의 최소값.
(16) INT의 해시 코드 ()
해시 코드를 다시 작성합니다.
(17) 부울 isLeapYear (INT 년)
지정된 해가 윤년 여부를 결정합니다.
(18) 무효 롤 (INT 필드, 부울 최대 )
지정된 시간 필드에 추가 또는 더 큰 필드를 변경하지 않고, (위 / 아래) 시간의 단일 유닛을 뺍니다.
(19) 무효 세트 (INT 필드, int 값 )
주어진 시간 값 필드.
(20) 무효 세트 (INT 년, INT 월 , INT 일)
올해 월, 일의 값을 설정합니다.
(21) 무효 세트 (INT 년, INT 월 , INT 날짜, INT 시간, INT 분)
연, 월, 일,시, 분 값을 설정한다.
(22) 무효 세트 (INT 년, INT 월 , INT 날짜, INT 시간, INT 분, INT 초)
년,시, 분, 달의 두 번째 값, 일을 설정합니다.
(23) 무효 setGregorianChange (날짜 일)
GregorianCalendar 변경 날짜를 설정합니다.
(24) 무효 setTime (날짜 일)
지정된 날짜 설정 달력의 현재 시간.
(25) 무효 setTimeInMillis (긴 밀리 초)
롱 타입의 지정된 번호로 설정 밀리 초 달력의 현재 시간입니다.
(26) 무효 setTimeZone (시간대 값)
현재 시간대와 시간대 설정.
(27) 문자열 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;
      // 初始化 Gregorian 日历
      // 使用当前时间和日期
      // 默认为本地时间和时区
      GregorianCalendar gcalendar = new GregorianCalendar();
      // 显示当前时间和日期的信息
      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));
      
      // 测试当前年份是否为闰年
      if(gcalendar.isLeapYear(year)) {
         System.out.println("当前年份是闰年");
      }
      else {
         System.out.println("当前年份不是闰年");
      }
   }
}

다음과 같은 결과를 컴파일 위의 예는 다음과 같습니다

Date: Apr 22 2009
Time: 11:25:27
当前年份不是闰年