1. Java <br /> 날짜의 날짜 개요는 Java의 매우 복잡한 콘텐츠입니다. 다른 언어와 국가 환경의 날짜, 날짜의 국제화, 날짜와 시간 간의 전환, 날짜의 추가 및 뺄셈 및 날짜의 디스플레이 형식은 모두 매우 복잡한 문제입니다.
Java에서는 운영 날짜에는 주로 다음 클래스가 포함됩니다.
1. java.util.date
클래스 날짜는 특정 순간을 나타내며 밀리 초까지 정확합니다. JDK 1.1부터 시작하여 캘린더 클래스는 날짜와 시간 필드 간의 변환을 구현하는 데 사용해야하며 DateFormat 클래스를 사용하여 날짜 문자열을 형식화하고 분석해야합니다. 날짜를 해석하는 방법은 해, 월, 일, 시간, 시간, 분 및 두 번째 값을 포기합니다.
2. java.text.dateformat (추상 클래스)
DateFormat은 언어 독립적 인 방식으로 날짜 또는 시간을 형식화하고 분석하는 추상 날짜/시간 형식 서브 클래스입니다. 날짜/시간 형식 서브 클래스 (예 : SimpledateFormat)는 서식 (예 : 날짜-> 텍스트), 분석 (텍스트-> 날짜) 및 표준화를 허용합니다. 날짜를 날짜 개체 또는 순간 GMT (GMT) 1970, 1 월 1 일, 00:00:00부터 시작하는 밀리 초 수로 표시하십시오.
3. java.text.simpledateformat (dateformat direct subclass)
SimpledateFormat은 로케일 관련 방식으로 날짜를 형식화하고 분석하는 특정 클래스입니다. 서식 (날짜-> 텍스트), 분석 (텍스트-> 날짜) 및 정규화를 허용합니다.
SimpleDateFormat을 사용하면 사용자 정의 날짜 시간 형식 모드를 선택할 수 있습니다. 그러나 DateFormat에서 GetTimeInstance, GetDateInstance 또는 GetDateTimeStance를 사용하여 새로운 날짜 시간 Formatter를 작성하는 것이 좋습니다.
4. java.util.calendar (초록 클래스)
캘린더 클래스는 특정 모멘트를 해, 월, Day_of_Month, Hour 등과 같은 일련의 달력 필드로 변환하는 몇 가지 방법을 제공하는 초록 클래스이며 다음 주 날짜 얻기와 같은 달력 필드를 조작하는 몇 가지 방법을 제공합니다. 순간은 밀리 초 값으로 표현 될 수 있으며, 이는 에포크의 오프셋입니다 (예 : 00 : 00 : 00 : 00.000, GMT, 1970 년 1 월 1 일, GMT).
다른 로케일에 민감한 클래스와 마찬가지로, 캘린더는이 유형의 공통 객체를 얻기 위해 클래스 메소드 GetInstance를 제공합니다. 캘린더의 GetInstance 메소드는 현재 날짜와 시간에 따라 캘린더 필드가 초기화 된 캘린더 개체를 반환합니다.
5. java.util.Gregoriancalendar (캘린더의 직접 서브 클래스)
GregorianCalendar는 세계 대부분의 국가에서 사용하는 표준 캘린더 시스템을 제공하는 콘크리트 캘린더의 콘크리트 서브 클래스입니다.
GregorianCalendar는 단일 불연속성을 지원하는 Julian 및 Gregorian 달력 시스템을 모두 지원하는 하이브리드 캘린더입니다. 기본적으로 Gregorian Calendar가 설립 된 Gregorian 날짜에 해당합니다 (일부 국가는 1582 년 10 월 15 일, 다른 국가에서는 일부 국가가 설립되었습니다). SetGregorianChange ()를 호출하여 시작 날짜를 발신자가 변경할 수 있습니다.
2. java.util.date 사용
1. java.util.date의 API 소개
클래스 java.util.date는 특정 순간을 나타내며 밀리 초까지 정확합니다. 제공된 방법은 많이 있지만 많은 방법이 구식이며 권장되지 않습니다. 다음은 구식이 아닌 메소드만을 목록에 있습니다.
시공 방법 요약
------------------------
날짜()
날짜 객체를 할당하고 현재 시간 으로이 객체를 초기화하여 할당 된 시간 (밀리 초까지 정확함)을 나타냅니다.
날짜 (긴 날짜)
날짜 개체를 할당 하고이 객체를 초기화하여 표준 벤치 마크 시간 ( "epoch", 즉 00:00:00 GMT) 이후 지정된 밀리 초를 나타 내기 위해이 개체를 초기화하십시오.
방법 요약
------------------------
부울 후 (날짜)
이 날짜가 지정된 날짜 이후인지 테스트합니다.
전 부울 전 (날짜)
이 날짜가 지정된 날짜 이전인지 여부를 테스트합니다.
객체 클론 ()
이 개체의 사본을 반환합니다.
int compareto (다른 데이트)
두 날짜의 순서를 비교하십시오.
부울 평등 (Object OBJ)
두 날짜의 평등을 비교하십시오.
Long GetTime ()
1970 년 1 월 1 일 00:00:00 GMT 이후이 날짜 개체로 표시되는 밀리 초 수를 반환합니다.
int hashcode ()
이 개체의 해시 코드 값을 반환합니다.
void settime (오랜 시간)
1970 년 1 월 1 일에 00:00:00 GMT 이후 시간 시간의 시점을 나타내도록이 날짜 개체를 설정하십시오.
문자열 toString ()
이 날짜 객체를 다음 형식의 문자열로 변환하십시오. dow mon dd hh : mm : ss zzz yyyy where :
다우는 일주일 중 하루입니다 (Sun, Mon, Tue, Wed, Thu, Fri, Sat).
Mon은 달 (1 월, 2 월, 3 월, 4 월, 5 월, Jun, 7 월, 8 월, 9 월, 11 월, 12 월)입니다.
DD는 1 월 (01 ~ 31)의 하루입니다.
HH는 하루의 시간 (00 ~ 23)이며, 두 자리 소수점 숫자로 표시됩니다.
MM은 시간의 분 (00 ~ 59)이며 2 자리 소수점 숫자로 표시됩니다.
SS는 1 분 만에 초 (00 ~ 61)의 수입니다.
ZZZ는 시간대입니다 (일광 절약 시간을 반영합니다). 표준 시간 구역 약어는 방법 구문 분석에 의해 인식되는 시간대 약어를 포함합니다. 시간대 정보가 제공되지 않으면 ZZZ가 비어 있습니다. 즉, 문자가 전혀 포함되지 않습니다.
Yyyy는 1 년이며 4 자리 소수점 숫자로 표시됩니다.
다음은 날짜 클래스의 포괄적 인 예입니다.
public class testdate {public static void main (String [] args) {testDate testDate = new TestDate (); testDate.getSystemCurrentTime (); testDate.getCurrentDate (); } / *** 현재 시스템 시간을 가져옵니다* System.currentTimemillis ()는 현재 시스템 시간을 반환하고 1970 년 1 월 1 일에 0:00:00에 시작됩니다. 프로그램 실행이 진행될 때까지 밀리 초의 수가 경과하고 시스템 시간을 얻고 1 Second = 1000 milliseconds* / public void getsystemcurrent () {System.out.out.out.out. 시간---"); System.out.println (System.CurrentTimeMillis ()); } public void getCurrentDate () {System.out.println ( "--- 시스템의 현재 시간을 가져옵니다 ---"); // 날짜 생성 및 초기화 (초기 값은 현재 날짜입니다) 날짜 = 새 날짜 (); System.out.println ( "현재 날짜는 =" + date.toString ()); System.out.println ( "1970 년 1 월 1 일 이후 경험되는 밀리 초의 수 =" + date.gettime ()); }} 2. java.text.dateformat Abstract 클래스 사용
DateFormat은 언어 독립적 인 방식으로 날짜 또는 시간을 형식화하고 분석하는 추상 날짜/시간 형식 서브 클래스입니다. 날짜/시간 형식 서브 클래스 (예 : SimpledateFormat)는 서식 (예 : 날짜-> 텍스트), 분석 (텍스트-> 날짜) 및 표준화를 허용합니다. 날짜를 날짜 개체 또는 순간 GMT (GMT) 1970, 1 월 1 일, 00:00:00부터 시작하는 밀리 초 수로 표시하십시오.
DateFormat은 기본값 또는 주어진 로케일 및 다중 형식 스타일을 기준으로 기본 날짜/시간 포맷터를 얻기위한 여러 클래스 메소드를 제공합니다. 형식 스타일에는 전체, 장거리, 중간 및 짧은 것이 포함됩니다. 이러한 스타일 사용의 자세한 내용과 예는 메소드 설명에 제공됩니다.
DateFormat은 모든 로케일의 날짜를 형식화하고 분석하는 데 도움이됩니다. 몇 달, 몇 주 및 캘린더 형식 (음력 및 태양 달력) 동안 코드는 로케일 규칙과 완전히 관련이 없습니다.
현재 로케일의 날짜를 포맷하려면 정적 공장 방법을 사용하십시오.
mystring = dateformat.getDateInstance (). 형식 (myDate);
여러 날짜를 형식화하는 경우 형식을 가져 와서 여러 번 사용하는 것이 더 효율적이므로 시스템이 환경 언어 및 국가 계약에 대한 정보를 여러 번 얻을 필요가 없습니다.
dateformat df = dateformat.getDateInstance (); for (int i = 0; i <mydate.length; ++ i) {output.println (df.format (mydate [i]) +";"); }
다른 로케일의 날짜를 포맷하려면 getDateInstance ()를 호출하여 지정하십시오.
dateformat df = dateformat.getDateInstance (dateformat.long, locale.france);
DateFormat도 분석에도 사용할 수 있습니다.
mydate = df.parse (mystring);
GetDateInstance를 사용하여 해당 국가의 표준 날짜 형식을 얻으십시오. 다른 정적 공장 방법도 제공됩니다. gettimeinstance를 사용하여 해당 국가의 시간 형식을 얻으십시오. GetDateTimeInstance를 사용하여 날짜 및 시간 형식을 얻으십시오. 다른 옵션을 이러한 공장 방법으로 전달하여 결과의 길이를 제어 할 수 있습니다 (짧은 ~ 중간 ~ 전체에서 전체). 정확한 결과는 로케일에 따라 다르지만 일반적으로 다음과 같습니다.
단편은 12.13.52 또는 오후 3시 30 분과 같은 숫자입니다.
1952 년 1 월 12 일과 같이 매체는 더 길다
1952 년 1 월 12 일 또는 3:30:32와 같이 길다.
1952 년 4 월 12 일 화요일 AD 또는 3:30:42 PST와 같이 전체가 완전히 지정되어 있습니다.
원한다면 시간대를 형식으로 설정할 수도 있습니다. 서식 또는 분석에 대해 더 많은 제어를 강요하려는 경우 (또는 사용자에게 더 많은 컨트롤을 제공) 공장 메소드에서 얻은 Dateformat를 SimpledateFormat로 캐스트 할 수 있습니다. 이것은 대부분의 국가에서 효과가 있습니다. 특별 형식의 경우 시도 블록에 넣어야합니다.
또한 분석 및 서식 방법을 구문 분석 및 전위로 사용하여 문자열의 일부를 단계별로 분석 할 수 있습니다. 특정 필드를 정렬하거나 화면에서 문자열이 선택되는 위치를 찾으십시오.
DateFormat은 동기식이 아닙니다. 각 스레드에 대해 독립적 인 형식 인스턴스를 작성하는 것이 좋습니다. 여러 스레드가 동시에 형식에 액세스하면 외부 동기화되어야합니다.
3.
SimpledateFormat은 로케일 관련 방식으로 날짜를 형식화하고 분석하는 특정 클래스입니다. 서식 (날짜-> 텍스트), 분석 (텍스트-> 날짜) 및 정규화를 허용합니다.
SimpleDateFormat을 사용하면 사용자 정의 날짜 시간 형식 모드를 선택할 수 있습니다. 그러나 DateFormat에서 GetTimeInstance, GetDateInstance 또는 GetDateTimeStance를 사용하여 새로운 날짜 시간 Formatter를 작성하는 것이 좋습니다. 각각의 이러한 클래스 방법은 기본 형식 모드에서 초기화 된 날짜/시간 포맷터를 반환 할 수 있습니다. 필요에 따라 Applicpattern 메소드를 사용하여 형식 패턴을 수정할 수 있습니다. 이 방법 사용에 대한 자세한 내용은 DateFormat을 참조하십시오.
날짜 및 시간 모드
날짜 및 시간 형식은 날짜 및 시간 패턴 문자열로 지정됩니다. 날짜와 시간 패턴 문자열에서, 인용되지 않은 문자 'a'to 'z'및 'a'~ 'z'는 날짜 또는 시간 문자열 요소를 나타내는 패턴 문자로 해석됩니다. 설명을 피하기 위해 텍스트를 단일 따옴표 ( ')로 동봉 할 수 있습니다. " ''"는 단일 따옴표를 의미합니다. 다른 모든 캐릭터는 해석되지 않습니다. 포맷 할 때 출력 문자열에 간단하게 복사되거나 분석 할 때 입력 문자열과 일치합니다.
자세한 내용은 JDK API 문서를 볼 수 있습니다. 다음은 포괄적 인 예입니다.
public class testdateformat {public static void main (string [] args)은 parseexception {testDateFormat tdf = new TestDateFormat (); tdf.dateformat (); } /*** simpledateformat 클래스를 테스트하십시오* @throws parseexception* /public void dateformat () parseexception {// 날짜 생성 = 새 날짜 (); // 다른 날짜 형식 생성 dateformat df1 = dateformat.getInstance (); dateformat df2 = new simpledateformat ( "yyyy-mm-01 hh : mm : ss ee"); dateformat df3 = dateformat.getDateInstance (dateformat.full, locale.china); // 지정된 국가의 지정된 길이로 날짜 형식을 만듭니다. 길이는 다르고 표시되는 날짜도 다릅니다. dateformat df4 = new simpledateformat ( "yyyyy 년 연도 mm 달 dd day hh him mm mint ss 초 ee", locale.china); dateformat df5 = new simpledateformat ( "yyyy-mm-dd hh : mm : ss eeeeee", locale.us); dateformat df6 = new simpledateformat ( "yyyy-mm-dd"); // 다른 형식의 출력 날짜 System.out.println("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- df3. format (date)); df5. format (date). out.println (지정된 형식 YYYY-MM-DD에 따라 시스템 기본 영역 : //이 형식이 일치하지 않는 경우 1 = df1.parse가 발생합니다. 날짜 날짜 2 = df2.parse ( "2016-01-24 02:51:07 일요일"); 날짜 3 = df3.parse ( "2016-01-24"); 날짜 4 = df4.parse ( "2016-01-24 02:51:18 일요일"); 날짜 6 = df6.parse ( "2016-01-24"); System.out.println("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- System.out.println(date1); system.println (date3) (date4); 4. java.util.calendar (초록 클래스)
java.util.calendar는 추상 클래스, 시스템 시간의 추상적 표현입니다. 특정 모멘트를 연도, 월, Day_of_month, Hour 등과 같은 일련의 달력 필드로 변환하는 몇 가지 방법을 제공하고 달력 필드를 조작하는 방법 (예 : 다음 주 날짜 얻기)을 제공합니다. 순간은 밀리 초 값으로 표현 될 수 있으며, 이는 에포크의 오프셋입니다 (예 : 00 : 00 : 00 : 00.000, GMT, 1970 년 1 월 1 일, GMT).
다른 로케일에 민감한 클래스와 마찬가지로, 캘린더는이 유형의 공통 객체를 얻기 위해 클래스 메소드 GetInstance를 제공합니다. 캘린더의 GetInstance 메소드는 현재 날짜와 시간에 따라 캘린더 필드가 초기화 된 캘린더 개체를 반환합니다.
캘린더 인스턴스는 시스템 시간의 추상적 인 표현입니다. 캘린더 인스턴스에서 연도, 월, 주, 주, 월 및 월과 같은 정보를 알 수 있습니다. 캘린더 클래스에는 정적 메소드 get (int x)가 있습니다. 이 방법을 통해 관련 인스턴스의 일부 값 (연도, 월, 주, 주, 월 등) 정보를 얻을 수 있습니다. 매개 변수 X는 캘린더에 정의 된 수율 값입니다.
캘린더의 일부 트랩은 쉽게 떨어질 수 있습니다.
1. 캘린더의 주는 일요일에 시작되며 일정한 값은 0입니다.
2. 캘린더의 달은 1 월부터 시작되며 일정한 값은 0입니다.
3. 캘린더의 매월 첫날은 1입니다.
5. java.util.Gregoriancalendar (캘린더의 직접 서브 클래스)
GregorianCalendar는 세계 대부분의 국가에서 사용하는 표준 캘린더 시스템을 제공하는 콘크리트 캘린더의 콘크리트 서브 클래스입니다. Calendar Abstract 클래스와 함께 사용됩니다.
다음은 Calendar 클래스의 사용법을 보는 포괄적 인 예입니다.
공개 클래스 testCalendar {public static void main (String [] args)은 parseexception {testCalendar testCalendar = new TestCalendar (); TestCalendar.testCalendar (); testCalendar.testCalendar2 (); } public void testCalendar () {// 캘린더 캘린더 캘린더를 만드는 방법 now1 = calendar.getInstance (); 캘린더 now2 = New GregorianCalendar (); 달력 now3 = New GregorianCalendar (2016, 01, 24); 달력 now4 = New GregorianCalendar (2016, 01, 24, 15, 55); // 트레일 : 달력의 달은 0 ~ 11 캘린더입니다. 캘린더 now6 = 새로운 GregorianCalendar (locale.us); Calendar Now7 = New GregorianCalendar (Timezone.getTimezone ( "GMT-8 : 00")); // 캘린더 설정 now2.settime (new date ()); System.out.println (now2); now22.settimeinmillis (new date (). gettime ()); System.out.println (now2); // 날짜의 중국 출력 형식을 정의하고 출력 날짜 simpledateformat df = new SimpledateFormat ( "yyyyy 년 연도 mm 달 dd day hh 시간 mm 분 SS 초 e", locale.china); System.out.println ( "날짜의 중국어 형식 출력을 얻으십시오 :" + df.format (now5.gettime ()); System.out.println (); System.out.println("--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- System; System.out.println("Get year: " + now5.get(Calendar.YEAR)); System.out.println("Get month (month starts from 0): " + Now5. get day : " + get.out.out.println; Now5.get (calendar.second); System.out.println("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- "3 월", "4 월", "5 월", "6 월", "7 월", "8 월", "9 월", "10 월", "11 월", "12 월"}; System.out.println ( "Now5 객체의 달은 다음과 같습니다." + 개월 [now5.get (calendar.month)]; } public void testcalendar2 ()는 parseexception을 던졌습니다. {// 현재 달 캘린더 cal = calendar.getInstance ()에서 최대 일 수를 얻습니다. int maxday = cal.getActualMaximum (calendar.day_of_month); int mindday = cal.getActualminimum (calendar.day_of_month); System.out.println (Maxday); // 달의 마지막 날 날짜 formatter3 = new SimpledateFormat ( "yyyy-mm-"+maxday); System.out.println (format3.format (cal.gettime ()); // 달의 마지막 날 날짜 formatter4 = new SimpledateFormat ( "yyyy-mm-"+minday); System.out.println (formatter4.format (cal.gettime ()); // 두 날짜 사이의 일 수를 찾으십시오 java.text.simpledateformat format = new java.text.simpledateformat ( "yyyy-mm-dd"); java.util.date barkindate = format.parse ( "2007-12-24"); java.util.date enddate = format.parse ( "2007-12-25"); Long Day = (endDate.getTime ()-begindate.getTime ())/(24*60*60*1000); System.out.println ( "매일 횟수 ="+일); // 1 년 전 java.text.format formatter5 = new java.text.simpledateformat ( "yyyy-mm-dd"); java.util.date today date = new java.util.date (); long beforeTime = (Todaydate.getTime ()/1000) -60*60*24*365; Todaydate.settime (BeforeTime*1000); 문자열 beforedate = formatter5.format (오늘날); System.out.println (Beforedate); 캘린더 캘린더 = calendar.getInstance (); calendar.add (calendar.year, -1); System.out.println (formatter5.format (calendar.gettime ()); // 현재 주 월요일과 일요일 SimpledateFormat dateformat = new SimpledateFormat ( "yyyymmdd"); GregorianCalendar GregorianCalendar = New GregorianCalendar (); int dayinweek = gregoriancalendar.get (calendar.day_of_week); int 오프셋 = 0; if (dayinweek == 1) {// 일요일 오프셋 = 6; } else {// 월요일 ~ 토요일 오프셋 = dayinweek -2; } gregoriancalendar.add (gregoriancalendar.day_of_month, -offset); 문자열 sday = dateformat.format (gregoriancalendar.gettime ()); gregoriancalendar.add (gregoriancalendar.day_of_month, 6); String eday = dateformat.format (gregoriancalendar.gettime ()); System.out.println ( "이번 주 월요일 :" + sday); System.out.println ( "이번 주 일요일 :" + eday); }}3. 요약
자바에는 종종 날짜가 다섯 가지 측면이 있습니다.
1. 생성 날짜
2. 날짜 형식 표시
3. 날짜 변환 (주로 문자열과의 상호 변환)
4.
5. 날짜 크기와 추가 및 날짜의 뺄셈 비교.
위는 Java 날짜 및 시간 사용 방법이 귀하를 위해 요약되었습니다. 나는 그것이 당신의 학습에 도움이되기를 바랍니다.