Date 및 Calendar 클래스 및 날짜 작업에 대한 일반적인 사용 방법

5349 단어 calendar
1. 월별 최대 일수 계산
Calendar time=Calendar.getInstance(); 
time.clear(); 
time.set(Calendar.YEAR,year); //year   int 
time.set(Calendar.MONTH,i-1);// ,Calendar 0 
int day=time.getActualMaximum(Calendar.DAY_OF_MONTH);//  

주:set 방법을 사용하기 전에 반드시clear를 해야 합니다. 그렇지 않으면 많은 정보가 시스템의 현재 시간에서 계승됩니다.
2. Calendar와 Date의 전환
(1) Calendar에서 Date로 전환
Calendar cal=Calendar.getInstance(); 
Date date=cal.getTime(); 

(2) Date에서 Calendar로 전환
Date date=new Date(); 
Calendar cal=Calendar.getInstance(); 
cal.setTime(date);

3. 출력 날짜 시간 포맷하기 (이것은 비교적 많이 사용됨)

Date date=new Date(); 
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); 
String time=df.format(date); 
System.out.println(time); 

4. 일년 중 몇 주째를 계산한다
(1) 어느 날이 일년 중 몇 주인지 계산한다
Calendar cal=Calendar.getInstance(); 
cal.set(Calendar.YEAR, 2006); 
cal.set(Calendar.MONTH, 8); 
cal.set(Calendar.DAY_OF_MONTH, 3); 
int weekno=cal.get(Calendar.WEEK_OF_YEAR);

(2) 1년 중 몇 주가 며칠인지 계산한다
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd"); 
Calendar cal=Calendar.getInstance(); 
cal.set(Calendar.YEAR, 2006); 
cal.set(Calendar.WEEK_OF_YEAR, 1); 
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); 
System.out.println(df.format(cal.getTime())); 

5.add () 와 roll () 의 사용 (그다지 자주 사용하지 않음)
(1)add () 방법
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd"); 
Calendar cal=Calendar.getInstance(); 
cal.set(Calendar.YEAR, 2006); 
cal.set(Calendar.MONTH, 8); 
cal.set(Calendar.DAY_OF_MONTH, 3); 
cal.add(Calendar.DATE, -4); 
Date date=cal.getTime(); 
System.out.println(df.format(date)); 
cal.add(Calendar.DATE, 4); 
date=cal.getTime(); 
System.out.println(df.format(date));

(2) Roll 방법
cal.set(Calendar.YEAR, 2006); 
cal.set(Calendar.MONTH, 8); 
cal.set(Calendar.DAY_OF_MONTH, 3); 
cal.roll(Calendar.DATE, -4); 
date=cal.getTime(); 
System.out.println(df.format(date)); 
cal.roll(Calendar.DATE, 4); 
date=cal.getTime(); 
System.out.println(df.format(date)); 

6. 두 시간 사이의 간격 일수를 계산한다(이것은 비교적 자주 사용된다)
(1) Calendar 객체로 전송
public int getIntervalDays(Calendar startday,Calendar endday)...{ 
if(startday.after(endday)){ 
Calendar cal=startday; 
startday=endday; 
endday=cal; 
} 
long sl=startday.getTimeInMillis(); 
long el=endday.getTimeInMillis(); 

long ei=el-sl; 
return (int)(ei/(1000*60*60*24)); 
} 

(2) Date 객체로 전송
public int getIntervalDays(Date startday,Date endday)...{ 
if(startday.after(endday))...{ 
Date cal=startday; 
startday=endday; 
endday=cal; 
} 
long sl=startday.getTime(); 
long el=endday.getTime(); 
long ei=el-sl; 
return (int)(ei/(1000*60*60*24)); 
} 

(3) 간격 일수를 정확하게 계산하는 방법 개선
public int getDaysBetween (Calendar d1, Calendar d2) ...{ 
if (d1.after(d2)) ...{ 
java.util.Calendar swap = d1; 
d1 = d2; 
d2 = swap; 
} 
int days = d2.get(Calendar.DAY_OF_YEAR) - d1.get(Calendar.DAY_OF_YEAR); 
int y2 = d2.get(Calendar.YEAR); 
if (d1.get(Calendar.YEAR) != y2) ...{ 
d1 = (Calendar) d1.clone(); 
do ...{ 
days += d1.getActualMaximum(Calendar.DAY_OF_YEAR);//  
d1.add(Calendar.YEAR, 1); 
} while (d1.get(Calendar.YEAR) != y2); 
} 
return days; 
} 

주의: 위의 방법을 통해 어떤 시간을 파생시킬 수 있다. 예를 들어 메일박스에서 3주 안에 받은 메일(현재 시스템 시간을 얻기 - 3주 전 시간을 얻기)을 찾으려면 수신 시간과 일치하는 가장 좋은 것을 롱으로 포장해서 비교하는 것이 좋다.
예: 1년 전 날짜(밀리초 변환에 주의)
java.util.Date myDate=new java.util.Date(); 
long myTime=(myDate.getTime()/1000)-60*60*24*365; 
myDate.setTime(myTime*1000); 
String mDate=formatter.format(myDate);

7. String과 Date, Long 간 상호 변환(가장 일반적)
문자열이 시간 형식으로 바뀝니다. (문자열은 SimpleDateFormat의 형식과 일치하기만 하면 됩니다.)
일반적으로 우리는 시간의 경계를 정할 때substring에서 구체적인 시간--long-비교
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("M/dd/yyyy hh:mm:ss a",java.util.Locale.US); 
java.util.Date d = sdf.parse("5/13/2003 10:31:37 AM"); 
long dvalue=d.getTime(); 
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
String mDateTime1=formatter.format(d); 

8.시간을 통해시간을 구한다
년 월 주 구 일
SimpleDateFormat formatter2 = new SimpleDateFormat("yyyy-MM F E"); 
java.util.Date date2= formatter2.parse("2003-05 5  "); 
SimpleDateFormat formatter3 = new SimpleDateFormat("yyyy-MM-dd"); 
String mydate2=formatter3.format(date2); 

요일
mydate= myFormatter.parse("2001-1-1"); 
SimpleDateFormat formatter4 = new SimpleDateFormat("E"); 
String mydate3=formatter4.format(mydate); 

좋은 웹페이지 즐겨찾기