Date 및 Calendar 클래스 및 날짜 작업에 대한 일반적인 사용 방법
5349 단어 calendar
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);
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【GAS】Google 캘린더의 예정을 Slack 통지슬랙에 Google 캘린더 일정을 알리고 싶습니다. 아침 8시에 실행하여 대략 1일의 예정을 통지한다 slack의 내 프로필 → 환경 설정 → 메시지 및 미디어에서 Slack으로 메일 전송 사용 이메일 주소를 복사합...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.