자바 에서 시간 과 날짜 처리 에 대한 작은 기록

15397 단어 JavaF#JDKSUND 언어
더 읽 기
    시간 과 날 짜 를 처리 하 는 경우 가 많 습 니 다. 적 어 보 세 요. 하하.
     시간 과 날짜 에 자주 사용 되 는 몇 가지 종류: java. util. Date,
                            java.util.Calendar,
                            java.util.GregorainCalendar,
                            java.text.DateFormat,
                            java.text.SimpleDateFormat
java.util.Date :
밀리초
하루 24 * 60 * 60 = 86400 초
세계 시 (UT 또는 UTC), 그리니치 시 (GMT), 그리니치 시 (GMT) 와 세계 시 (UT)
그리니치 시 (GMT) 는 표준 적 인 '민간' 호칭 이 고, 세계 시 (UT) 는 같은 표준 이다.
과학적 호칭.UTC 와 UT 의 차 이 는 UTC 는 원자 시 계 를 바탕 으로 하고 UT 는 천체 관찰 을 바탕 으로 한다.
(중국어 판 jdk 정말 좋 네요. 과학 보급 교재 와 네, 하하)
자주 사용 하 는 구조 방법:
Date();
Date(long date)
(long date)  표준 기준 시간
00: 00: 00 GMT) 겪 은 밀리초 수.
또 일부 구조 방법 은 이미 deprecated 되 었 다.
주요 방법: (자주 사용 되 는 jdk 문서 몇 개 를 소개 합 니 다)
boolean after(Date when)   테스트 날 짜 는 이 날짜 이후 입 니 다.
boolean before(Date when)  테스트 날 짜 는 이 날짜 전에
Object clone()  이 대상 의 던 전 으로 돌아 가기
long getTime()  1970.1.1 00: 00: 00 GMT 이후 이 대상 이 표시 한 밀리초 수 를 되 돌려 줍 니 다.
void setTime (long time) 이 날짜 대상 을 설정 하여 1970 년 1 월 1 일 을 표시 합 니 다.
00: 00: 00 GMT 이후 time 밀리초 의 시간.
String toString () Date 대상 을 다음 과 같은 형식 으로 변환 합 니 다.
String:dow mon dd hh:mm:ss zzz yyyy
그 중 dow 는 일주일 중 어느 날 (Sun, Mon, Tue, Wed, Thu, Fri, Sat) 이다.
dow 는 일주일 중 어느 날 (Sun, Mon, Tue, Wed, Thu, Fri, Sat) 이다.
몬 은 월 (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep,
Oct, Nov, Dec)。
dd 는 1 월 의 어느 날 (01 에서 31) 로 두 개의 10 진수 로 표 시 됩 니 다.
hh 는 하루 의 시간 (00 에서 23) 으로 두 개의 10 진수 로 표 시 됩 니 다.
mm 는 시간 중의 분 (00 에서 59) 으로 두 개의 10 진수 로 표 시 됩 니 다.
ss 는 분 의 초 (00 에서 61) 로 두 개의 10 진수 로 표 시 됩 니 다.60, 61 은 '윤 초' 가 있어 서 그래 요.
zzz 는 시간 대 입 니 다.표준 시간 대 줄 임 말 은 parse 인식 방법 을 포함 한 시간 대 줄 임 말 입 니 다.
시간 대 정 보 를 제공 하지 않 으 면 zzz 가 비어 있 습 니 다. 즉, 문자 가 전혀 포함 되 지 않 습 니 다.
yyy 는 연도 로 4 비트 10 진수 로 표 시 됩 니 다.
System. currentTimeMillis () 를 사용 하여 현재 시스템 시간의 밀리초 수 를 얻 습 니 다.
java.util.Calendar :
Calendar 클래스 는 추상 적 인 클래스 입 니 다.
Calendar rightNow = Calendar.getInstance();
세 가지 방법 으로 달력 필드 를 변경 할 수 있 습 니 다: set (), add (), roll ().
set (f, value) 달력 필드 f 를 value 로 변경 합 니 다.
달력 필드 f 가 변경 되 었 음 을 표시 하기 위해 내부 구성원 변 수 를 설정 합 니 다.달력 필드 에 도 불구 하고
f 는 즉시 변경 되 었 으 나 다음 에 get (), getTime (), getTimeInMillis () 를 호출 할 때 까지
add () 또는 roll () 시 달력 의 시간 값 을 다시 계산 합 니 다 (밀리초 단위).그래서
set () 로 여러 번 불필요 한 계산 을 촉발 하지 않 습 니 다.
dd (f, delta) 는 델 타 를 f 필드 에 추가 합 니 다.이것 은 호출 과 같다.
set(f, get(f) + delta)
roll (f, delta) 은 delta 를 f 필드 에 추가 하지만 더 큰 필드 는 변경 하지 않 습 니 다.
java.util.GregorianCalendar:
Gregorian Calendar 는 Calendar 의 구체 적 인 하위 클래스 로 세계 대부분 국 가 를 제공 합 니 다.
사용 하 는 표준 달력 시스템 입 니 다.
java.text.DateFormat:
Dateformat 는 날짜 / 시간 형식 화 된 하위 클래스 의 추상 적 인 클래스 로 언어 와 무관 한 방식 으로 포맷 되 어 있 습 니 다.
날짜 나 시간 을 분석 하 다.
java.text.SimpleDateFormat:
Simple DateFormat 은 언어 환경 과 관련 된 방식 으로 날 짜 를 포맷 하고 분석 하 는 구체 적 인 클래스 입 니 다.
포맷 (날짜 - > 텍스트), 분석 (텍스트 - > 날짜), 규범 화 를 허용 합 니 다.
Simple DateFormat 은 사용자 가 정의 하 는 날짜 - 시간 형식의 모드 를 선택 할 수 있 습 니 다.하지만
DateFormat 의 getTimeInstance, getDateInstance 또는
getDateTimeInstance 에서 새로운 생 성 날짜 - 시간 포맷 프로그램 을 만 듭 니 다.모든 이런 종류의 방법
기본 형식 으로 초기 화 된 날짜 / 시간 포맷 프로그램 을 되 돌려 줍 니 다.필요 에 따라 사용 할 수 있다
apply Pattern 방법 으로 형식 모드 를 수정 합 니 다.
날짜 와 시간 형식 은 날짜 와 시간 모드 문자열 로 지 정 됩 니 다.
날짜 와 시간 모드 문자열 에서 따옴표 가 붙 지 않 은 알파벳 'A' 부터 'Z', 'a' 부터 'z' 까지
날짜 나 시간 문자열 요 소 를 나타 내 는 패턴 알파벳 으로 해 석 됩 니 다.
인용 하 다.
자모             날짜 또는 시간 요소            나타내다         예시 
G                 Era 표식 부호               Text          AD
y                 년.                       Year         1996; 96
M                 년 중 월               Month        July; Jul; 07  
w                 연중 주 수               Number        27
W                 월 중 주 수             Number        2
D                 연중 일수               Number        189     
d                 월중 일수             Number         10
F                 월 중 주             Number          2   
E                 요일             Text           Tuesday; Tue 
a                 Am / pm 태그               Text           PM 
H                 하루 중 시간 수 (0 - 23)   Number          0 
k                 하루 중 시간 수 (1 - 24)   Number          24 
K                am / pm 의 시간 수 (0 - 11)  Number          0
h                am / pm 의 시간 수 (1 - 12)  Number          12   
m                시간 중의 분 수            Number          30 
s                분 초              Number          55 
S                밀리초 수                    Number          978
z                시간 대                      General time zone      Pacific Standard Time; PST; GMT-08:00  
Z                시간 대                      RFC 822 time zone  -0800 
인용 하 다.
날짜 와 시간 모드                                   결실 
"yyyy.MM.dd G 'at' HH:mm:ss z"                   2001.07.04 AD at 12:08:56 PDT
"EEE, MMM d, ''yy"                               Wed, Jul 4, '01   
"h:mm a"                                         12:08 PM 
"hh 'o''clock' a, zzzz"                          12 o'clock PM, Pacific Daylight Time 
"K:mm a, z"                                      0:08 PM, PDT 
"yyyyy.MMMMM.dd GGG hh:mm aaa"                   02001.July.04 AD 12:08 PM
"EEE, d MMM yyyy HH:mm:ss Z"                     Wed, 4 Jul 2001 12:08:56 -0700   
"yyMMddHHmmssZ"                                  010704120856-0700 
"yyyy-MM-dd'T'HH:mm:ss.SSSZ"                     2001-07-04T12:08:56.235-0700 
현재 시스템 의 밀리초 획득:

package org.lokvin.example.calendar;

public class CalendarExample1 {
	
	public static void main(String[] args) {
		
		java.util.Date date = new java.util.Date();
        //          ,  1970.1.1 00:00:00 GMT
		long time = System.currentTimeMillis();
		java.util.Date date1 = new java.util.Date(time);
		System.out.println("date = " + date.toString());
		System.out.println("millisecond = " + time);
		System.out.println("date1 = " + date1.toString());	
	}

}

실행 결과:
인용 하 다.
date = Mon Dec 04 16:01:16 CST 2006
millisecond = 1165219276771
date1 = Mon Dec 04 16:01:16 CST 2006

package org.lokvin.example.calendar;

import java.util.Calendar;
import java.util.GregorianCalendar;

public class CalendarExample2 {
	
	public static void main(String[] args) {
        //      
		Calendar calendar = Calendar.getInstance();
		int era = calendar.get(Calendar.ERA);// 0 = BC, 1 = AD
		System.out.println("ERA = " + era);
		int year = calendar.get(Calendar.YEAR); //2006
		System.out.println("YEAR = " + year);
		int month = calendar.get(Calendar.MONTH);
		//      , 0..11    JAN..DEC
		System.out.println("Month = " + month);//0 = JAN ... 11 = DEC
		int day = calendar.get(Calendar.DAY_OF_MONTH);
		System.out.println("Day of Month = " + day); // 1
		//          , Sun=1, Mon=2 ... Sta=7
		int day_of_week = calendar.get(Calendar.DAY_OF_WEEK);
		System.out.println("Day of Week = " + day_of_week);
		
		//       12     Calendar.HOUR
		int hour12 = calendar.get(Calendar.HOUR);
		//   AM ,PM , 0 = AM, 1 = PM
		int ampm = calendar.get(Calendar.AM_PM);
		System.out.println("hour 12 = " + hour12);
		System.out.println("am pm = " + ampm); //0 = am , 1 = pm
		//       24    Calendar.HOUR_OF_DAY
		int hour24 = calendar.get(Calendar.HOUR_OF_DAY);
		System.out.println("hour 24 = " + hour24);
		
		
		Calendar today = new GregorianCalendar(2006, Calendar.DECEMBER, 4);
        //Calendar.getInstance()                
		System.out.println("calendar = " + calendar.getTime().toString());
		//   new GregorianCalendar(2006, Calendar.DECEMBER, 4)
		//    calendar       , ,    0(   =0)
		System.out.println("today = " + today.getTime().toString());
		
		
	}

}


실행 결과:
인용 하 다.
ERA = 1
YEAR = 2006
Month = 11
Day of Month = 4
Day of Week = 2
hour 12 = 4
am pm = 1
hour 24 = 16
calendar = Mon Dec 04 16:22:42 CST 2006
today = Mon Dec 04 00:00:00 CST 2006
두 날짜 사이 의 비교:

package org.lokvin.example.calendar;

import java.util.Calendar;
import java.util.GregorianCalendar;

/*
 *      calendar        
 */
public class CalendarExample3 {
	
	public static void main(String[] args) {
        //    
		Calendar xmas = new GregorianCalendar(2006, Calendar.DECEMBER, 25);
		Calendar newYear = new GregorianCalendar(2007, Calendar.JANUARY, 1);
	    
		//        
		boolean flag = xmas.before(newYear);
		System.out.println("flag = " + flag);
		
		flag = xmas.after(newYear);
		System.out.println("flag = " + flag);
		
        //          
		long timeDiffMillis = newYear.getTimeInMillis() - xmas.getTimeInMillis();
		System.out.println("time diff millis = " + timeDiffMillis);
		
        //         
		long diffSecs = timeDiffMillis / 1000;
		System.out.println("time diff secs = " + diffSecs);
		
		//         
		long diffMins = timeDiffMillis / (1000 * 60);
		System.out.println("time diff mins = " + diffMins);
		
		//         
		long diffHours = timeDiffMillis / (1000 * 60 * 60);
		System.out.println("time diff hours = " + diffHours);
		
		//        
		long diffDays = timeDiffMillis / (1000 * 60 * 60 * 24);
		System.out.println("time diff days = " + diffDays);
			
	}

}

실행 결과:
인용 하 다.
flag = true
flag = false
time diff millis = 604800000
time diff secs = 604800
time diff mins = 10080
time diff hours = 168
time diff days = 7
Calendar 로 나이 계산 하기:

package org.lokvin.example.calendar;

import java.util.Calendar;
import java.util.GregorianCalendar;

/*
 *     
 */
public class CalendarExample4 {
   
	public static void main(String[] args) {
        //      Calendar   
		Calendar birthDate = new GregorianCalendar(1979, Calendar.JULY, 7);
		Calendar today = Calendar.getInstance();
		int age = today.get(Calendar.YEAR) - birthDate.get(Calendar.YEAR);
		
        //        ,  age - 1
		birthDate.add(Calendar.YEAR, age);
		if(today.before(birthDate)){
			age--;
		}
		System.out.println("age = " + age);
	}

   

}

윤년 여 부 를 판단 하 다.

package org.lokvin.example.calendar;

import java.util.GregorianCalendar;

/*
 *         leap year
 */
public class CalendarExample5 {
	
	public static void main(String[] args) {
        //    "  " leap year
		GregorianCalendar cal = new GregorianCalendar();
		boolean isLeapYear = cal.isLeapYear(1998);
		System.out.println("is leap year 1998 = " + isLeapYear);
		isLeapYear = cal.isLeapYear(2000);
		System.out.println("is leap year 2000 = " + isLeapYear);
	}
}

실행 결과:
인용 하 다.
is leap year 1998 = false
is leap year 2000 = true
다른 시간 대 획득 시간:

package org.lokvin.example.calendar;

import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.TimeZone;

/*
 *           
 */

public class CalendarExample6 {
	
	public static void main(String[] args) {
		
		Calendar cal = new GregorianCalendar();
		int hour12 = cal.get(Calendar.HOUR);
		int hour24 = cal.get(Calendar.HOUR_OF_DAY);
		System.out.println("hour12 in our timezone = " + hour12);
		System.out.println("hour24 in our timezone = " + hour24);
		
		//           ,   zoneId     
		Calendar calJap = new GregorianCalendar(TimeZone.getTimeZone("Japan"));
		hour12 = calJap.get(Calendar.HOUR);
		System.out.println("hour12 in japs timezone = " + hour12);
		hour24 = calJap.get(Calendar.HOUR_OF_DAY);
		System.out.println("hour24 in japs timezone = " + hour24);
		
        //   zoneId    
		String[] zoneIds = TimeZone.getAvailableIDs();
		for(int i=0; i
      
 

hour12 in our timezone = 5
hour24 in our timezone = 17
hour12 in japs timezone = 6
hour24 in japs timezone = 18
zone id = Etc/GMT+12
zone id = Etc/GMT+11
zone id = MIT
zone id = Pacific/Apia
zone id = Pacific/Midway
...
포맷 날짜:

package org.lokvin.example.calendar;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateForamExample {
	public static void main(String[] args) {
		Date rightNow = new Date();
		DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
		DateFormat format2 = new SimpleDateFormat("yyyy-MM-dd");
		DateFormat format3 = new SimpleDateFormat("h:mm a");
		DateFormat format4 = new SimpleDateFormat("yyyy.MM.dd G 'at' HH:mm:ss z");
		DateFormat format5 = new SimpleDateFormat("EEE, MMM, dd, ''yyyy");
		DateFormat format6 = new SimpleDateFormat("yyyy.MM.dd kk:mm 'o''clock' a, zzzz");
		DateFormat format7 = new SimpleDateFormat("yyyyy.MMMMM.dd GGG hh:mm aaa");
		
		System.out.println("format1 = " + format1.format(rightNow));
		System.out.println("format2 = " + format2.format(rightNow));
		System.out.println("format3 = " + format3.format(rightNow));
		System.out.println("format4 = " + format4.format(rightNow));
		System.out.println("format5 = " + format5.format(rightNow));
		System.out.println("format6 = " + format6.format(rightNow));
		System.out.println("format7 = " + format7.format(rightNow));
	}

}

출력 결과:
인용 하 다.
format1 = 2006-12-05 06:12:02
format2 = 2006-12-05
오후 6: 12
format 4 = 2006.12.05 서기 at 18: 12: 02 CST
format 5 = 화요일, 12 월, 05, '2006
18: 12 o 'clock 오후, 중국 표준시 간
12 월. 05 서기 06: 12 오후

좋은 웹페이지 즐겨찾기