시스템의 밀리초 구하기.(국제표준시각(UTC, GMT) 1970/1/1/0/0/0 으로부터 경과한 시각)
// 밀리초 단위(*1000은 1초), 음수이면 이전 시각
longtime =System.currentTimeMillis ();
System.out.println (time.toString());
현재 시각을 가져오기.
Datetoday =newDate();
System.out.println (today );
결과 : Sat Jul 12 16:03:00 GMT+01:00 2000
경과시간(초) 구하기
longtime1 =System.currentTimeMillis ();
longtime2 =System.currentTimeMillis ();
system.out.println ((time2 -time1 )/1000.0);
Date를 Calendar로 맵핑하기
Dated =newDate();
Calendarc =Calendar.getInstance ();
c.setTime (d );
날짜(년/월/일/시/분/초) 구하기
importjava.util.*;importjava.text.*;
SimpleDateFormatformatter =newSimpleDateFormat("yyyy.MM.dd HH:mm:ss",Locale.KOREA );
DatecurrentTime =newDate();
StringdTime =formatter.format (currentTime );
System.out.println (dTime );
날짜(년/월/일/시/분/초) 구하기2
GregorianCalendartoday =newGregorianCalendar();
intyear =today.get (today.YEAR );
intmonth =today.get (today.MONTH )+1;
intyoil =today.get (today.DAY_OF_MONTH );
GregorianCalendargc =newGregorianCalendar();
System.out.println (gc.get (Calendar.YEAR ));
System.out.println (String.valueOf(gc.get (Calendar.MONTH )+1));
System.out.println (gc.get (Calendar.DATE ));
System.out.println (gc.get (DAY_OF_MONTH ));
날짜(년/월/일/시/분/초) 구하기3
DateFormatdf =DateFormat.getDateInstance(DateFormat.LONG,Locale.KOREA);
Calendarcal =Calendar.getInstance(Locale.KOREA);
nal =df.format(cal.getTime());
표준시간대를 지정하고 날짜를 가져오기.
TimeZonejst =TimeZone.getTimeZone ("JST");
Calendarcal =Calendar.getInstance (jst );
// 주어진 시간대에 맞게 현재 시각으로 초기화된 GregorianCalender 객체를 반환.
// 또는 Calendar now = Calendar.getInstance(Locale.KOREA);
System.out.println (cal.get (Calendar.YEAR )+"년 "+(cal.get (Calendar.MONTH )+1)+"월 "+cal.get (Calendar.DATE )+"일 "+cal.get (Calendar.HOUR_OF_DAY )+"시 "+cal.get (Calendar.MINUTE )+"분 "+cal.get (Calendar.SECOND )+"초 ");
결과 : 2000년 8월 5일 16시 16분 47초
영어로된 날짜를 숫자로 바꾸기
DatemyDate =newDate("Sun,5 Dec 1999 00:07:21");
System.out.println (myDate.getYear ()+"-"+myDate.getMonth ()+"-"+myDate.getDay ());
"Sun, 5 Dec 1999 00:07:21"를 "1999-12-05"로 바꾸기
SimpleDateFormatformatter_one =newSimpleDateFormat("EEE, dd MMM yyyy hh:mm:ss",Locale.ENGLISH );
SimpleDateFormatformatter_two =newSimpleDateFormat("yyyy-MM-dd");
StringinString ="Sun, 5 Dec 1999 00:07:21";ParsePositionpos =newParsePosition(0);
DatefrmTime =formatter_one.parse (inString,pos );
StringoutString =formatter_two.format (frmTime );System.out.println (outString );
숫자 12자리를, 다시 날짜로 변환하기
DateconFromDate =newDate();
longttl =conFromDate.parse ("Dec 25, 1997 10:10:10");
System.out.println (ttl ); //예 938291839221
Datetoday =newDate(ttl );
DateFormatformat =DateFormat.getDateInstance (DateFormat.FULL,Locale.US );
Stringformatted =format.format (today );
System.out.println (formatted );
특정일로부터 n일 만큼 이동한 날짜 구하기
특정일의 시간을 long형으로 읽어온다음
날짜*24*60*60*1000 을 계산하여 long형에 더해줍니다.
그리고 나서 Date클래스와 Calender클래스를 이용해서 날짜와 시간을 구하면 됩니다
특정일에서 일정 기간후의 날짜 구하기2
//iDay 에 입력하신 만큼 빼거나 더한 날짜를 반환 합니다.
importjava.util.*;
publicStringgetDate (intiDay ){
Calendartemp=Calendar.getInstance ();
StringBuffersbDate=newStringBuffer();
temp.add (Calendar.DAY_OF_MONTH,iDay );
intnYear =temp.get (Calendar.YEAR );
intnMonth =temp.get (Calendar.MONTH )+1;
intnDay =temp.get (Calendar.DAY_OF_MONTH );
sbDate.append (nYear );
if(nMonth 10)sbDate.append ("0");
sbDate.append (nMonth );
if(nDay 10)sbDate.append ("0");
sbDate.append (nDay );
returnsbDate.toString();
}
현재날짜에서 2달전의 날짜를 구하기
Calendarcal =Calendar.getInstance ();
//오늘 날짜를 기준으루..cal.add (cal.MONTH,-2);
//2개월 전....System.out.println (cal.get (cal.YEAR ));
System.out.println (cal.get (cal.MONTH )+1);
System.out.println (cal.get (cal.DATE ));
달에 마지막 날짜 구하기
for(intmonth =1;month <=12;month++){
GregorianCalendarcld =newGregorianCalendar(2001,month -1,1);
System.out.println (month +"/"+cld.getActualMaximum (Calendar.DAY_OF_MONTH ));
}
해당하는 달의 마지막 일 구하기
GregorianCalendartoday =newGregorianCalendar();
intmaxday =today.getActualMaximum ((today.DAY_OF_MONTH ));
System.out.println (maxday );
특정일을 입력받아 해당 월의 마지막 날짜를 구하는 간단한 예제. (달은 -1 해줍니다.)
윤달 30일 31일 알아오기.
Calendarcal =Calendar.getInstance ();
cal.set (Integer.parseInt (args[0]),Integer.parseInt (args [1])-1,Integer.parseInt (args [2]));
SimpleDateFormatdFormat =newSimpleDateFormat("yyyy-MM-dd");
System.out.println ("입력 날짜 "+dFormat.format (cal.getTime ()));
System.out.println ("해당 월의 마지막 일자 : "+cal.getActualMaximum (Calendar.DATE ));
해당월의 실제 날짜수 구하기 ( 1999년 1월달의 실제 날짜수를 구하기 )
Calendarcalendar =Calendar.getInstance ();
calendar.set (1999,0,1);
intmaxDays =calendar.getActualMaximum (Calendar.DAY_OF_MONTH );
어제 날짜 구하기
오늘날짜를 초단위로 구해서 하루분을 빼주고 다시 셋팅해주면 쉽게 구할수 있죠.
setTime((기준일부터 오늘까지의 초를 구함) - 24*60*60)해주면 되겠죠.
어제 날짜 구하기2
importjava.util.*;
publicstaticDategetYesterday (Datetoday ){
if(today ==null)thrownewIllegalStateException("today is null");
Dateyesterday =newDate();
yesterday.setTime (today.getTime ()-((long)1000*60*60*24));
returnyesterday;
}
내일 날짜 구하기
Datetoday =newDate();
Datetomorrow =newDate(today.getTime ()+(long)(1000*60*60*24));
내일 날짜 구하기2
Calendartoday =Calendar.getInstance ();
today.add (Calendar.DATE,1);
Datetomorrow =today.getTime ();
오늘날짜에서 5일 이후 날짜를 구하기
CalendarcCal =Calendar.getInstance();
c.add(Calendar.DATE,5);
날짜에 해당하는 요일 구하기
//DAY_OF_WEEK리턴값이 일요일(1), 월요일(2), 화요일(3) ~~ 토요일(7)을 반환합니다.
//아래 소스는 JSP일부입니다.
importjava.util.*;
Calendarcal=Calendar.getInstance ();
intday_of_week =cal.get (Calendar.DAY_OF_WEEK );
if(day_of_week ==1)m_week="일요일";
elseif(day_of_week ==2)m_week="월요일";
elseif(day_of_week ==3)m_week="화요일";
elseif(day_of_week ==4)m_week="수요일";
elseif(day_of_week ==5)m_week="목요일";
elseif(day_of_week ==6)m_week="금요일";
elseif(day_of_week ==7)m_week="토요일";
콤보박스로 선택된 날짜(예:20001023)를 통해 요일을 영문으로 가져오기
//gc.get(gc.DAY_OF_WEEK); 하면 일요일=1, 월요일=2, ..., 토요일=7이 나오니까
//요일을 배열로 만들어서 뽑아내면 되겠죠.
GregorianCalendargc=newGregorianCalendar(2000,10-1,23);
String[]dayOfWeek ={"","Sun","Mon",....,"Sat"};
Stringyo_il =dayOfWeek (gc.get (gc.DAY_OF_WEEK ));
두 날짜의 차이를 일수로 구하기
각각의 날짜를 Date형으로 만들어서 getTime()하면
long으로 값이 나오거든요(1970년 1월 1일 이후-맞던가?- 1/1000 초 단위로..)
그러면 이값의 차를 구해서요. (1000*60*60*24)로 나누어 보면 되겠죠.
두 날짜의 차이를 일수로 구하기2
importjava.io.*;
importjava.util.*;
Datetoday =newDate();
Calendarcal =Calendar.getInstance ();
cal.setTime (today ); // 오늘로 설정. Calendarcal2 =Calendar.getInstance ();
cal2.set (2000,3,12); // 기준일로 설정. month의 경우 해당월수-1을 해줍니다.
intcount =0;while(!cal2.after (cal )){count++;cal2.add (Calendar.DATE,1); // 다음날로 바뀜
System.out.println (cal2.get (Calendar.YEAR )+"년 "+(cal2.get (Calendar.MONTH )+1)+"월 "+cal2.get (Calendar.DATE )+"일");}
System.out.println ("기준일로부터 "+count +"일이 지났습니다.");
두 날짜의 차이를 일수로 구하기3
importjava.io.*;
importjava.util.*;
publicclassDateDiff{
publicstaticintGetDifferenceOfDate(intnYear1,intnMonth1,intnDate1,intnYear2,intnMonth2,intnDate2 ){
Calendarcal =Calendar.getInstance ();
intnTotalDate1 =0,nTotalDate2 =0,nDiffOfYear =0,nDiffOfDay =0;
if(nYear1 >nYear2 ){
for(inti =nYear2;i nYear1;i++){
cal.set (i,12,0);
nDiffOfYear +=cal.get (Calendar.DAY_OF_YEAR );
}
nTotalDate1 +=nDiffOfYear;
}elseif(nYear1 nYear2 ){
for(inti =nYear1;i nYear2;i++){
cal.set (i,12,0);nDiffOfYear +=cal.get (Calendar.DAY_OF_YEAR );
}
nTotalDate2 +=nDiffOfYear;
}
cal.set (nYear1,nMonth1-1,nDate1 );
nDiffOfDay =cal.get (Calendar.DAY_OF_YEAR );
nTotalDate1 +=nDiffOfDay;cal.set (nYear2,nMonth2-1,nDate2 );
nDiffOfDay =cal.get (Calendar.DAY_OF_YEAR );
nTotalDate2 +=nDiffOfDay;
returnnTotalDate1-nTotalDate2;
}
publicstaticvoidmain (Stringargs[]){
System.out.println (""+GetDifferenceOfDate(2000,6,15,1999,8,23));
}
}
파일에서 날짜정보를 가져오기
Filef =newFile(directory,file );
Datedate =newDate(f.lastModified ());
Calendarcal =Calendar.getInstance ();
cal.setTime (date );
System.out.println("Year : "+cal.get(Calendar.YEAR));
System.out.println("Month : "+(cal.get(Calendar.MONTH)+1));
System.out.println("Day : "+cal.get(Calendar.DAY_OF_MONTH));
System.out.println("Hours : "+cal.get(Calendar.HOUR_OF_DAY));
System.out.println("Minutes : "+cal.get(Calendar.MINUTE));
System.out.println("Second : "+cal.get(Calendar.SECOND));
날짜형식으로 2000-01-03으로 처음에 인식을 시킨후
7일씩 증가해서 1년정도의 날짜를 출력해 주고 싶은데요.
SimpleDateFormatsdf =newSimpleDateFormat("yyyy-mm-dd");
Calendarc =Calendar.getInstance ();
for(inti =0;i 48;i++){
c.clear ();
c.set (2000,1,3-(i *7));java.util.Dated =c.getTime ();
Stringthedate =sdf.format (d );
System.out.println (thedate );
}
쓰레드에서 날짜 바꾸면 죽는 문제
Main화면에 날짜와시간이Display되는 JPanel이 있습니다.
date로 날짜와 시간을 변경하면 Main화면의 날짜와 시간이 Display되는 Panel에
변경된 날짜가 Display되지 않고 Main화면이 종료되어 버립니다.
문제소스:
publicvoidrun (){
while(true){
try{
timer.sleep (60000);
}catch(InterruptedExceptionex ){}
lblTimeDate.setText (fGetDateTime ());
repaint ();
}
}
publicStringfGetDateTime (){
finalintmillisPerHour =60*60*1000;
StringDATE_FORMAT ="yyyy / MM / dd HH:mm";
SimpleDateFormatsdf =newSimpleDateFormat(DATE_FORMAT );
SimpleTimeZonetimeZone =newSimpleTimeZone(9*millisPerHour,"KST");
sdf.setTimeZone (timeZone );
longtime =System.currentTimeMillis ();
Datedate =newDate(time );
returnsdf.format (date );
}
해답:
// 날짜와 요일 구한다. timezone 으로 날짜를 다시 셋팅하시면 됨니다.
publicStringgetDate (){
Datenow =newDate();
SimpleDateFormatsdf4 =newSimpleDateFormat("yyyy/MM/dd HH:mm EE");
sdf4.setTimeZone (TimeZone.getTimeZone ("Asia/Seoul"));
returnsdf4.format (now );
}
날짜와 시간이 유효한지 검사하려면...?
importjava.util.*;
importjava.text.*;
publicclassDateCheck{booleandateValidity =true;
DateCheck(Stringdt ){
try{
DateFormatdf =DateFormat.getDateInstance (DateFormat.SHORT );
df.setLenient (false);Datedt2 =df.parse (dt );
}catch(ParseExceptione ){
this.dateValidity =false;
}catch(IllegalArgumentExceptione ){
this.dateValidity =false;
}
}
publicbooleandatevalid (){
returndateValidity;
}
publicstaticvoidmain (Stringargs []){
DateCheckdc =newDateCheck("2001-02-28");
System.out.println (" 유효한 날짜 : "+dc.datevalid ());
}
두 날짜 비교하기(아래보다 정확)
그냥 날짜 두개를 long(밀리 세컨드)형으로 비교하시면 됩니다.
이전의 데이타가 date형으로 되어 있다면, 이걸 long형으로 변환하고.
현재 날짜(시간)은 System.currentTimeMillis()메소드로 읽어들이고,
두수(long형)를 연산하여 그 결과 값으로 비교를 하시면 됩니다.
만약 그 결과값이 몇시간 혹은 며칠차이가 있는지를 계산할려면,
결과값을 Calender의 setTimeInMillis(long millis) 메소드를 이용해
설정한다음 각각의 날짜나 시간을 읽어오시면 됩니다
두 날짜 비교하기2
//Calendar를 쓸 경우 데이타의 원본을 고치기 때문에 clone()을 사용하여 \
//복사한 후에 그 복사본을 가지고 비교한다
importjava.util.*;
importjava.util.Calendar.*;
importjava.text.SimpleDateFormat;
publicclassDayComparisonTest{
publicstaticvoidmain(Stringargs[]){
Calendarcal =Calendar.getInstance();
SimpleDateFormatdateForm =newSimpleDateFormat("yyyy-MM-dd");
CalendaraDate =Calendar.getInstance();
// 비교하고자 하는 임의의 날짜aDate.set(2001,0,1);CalendarbDate =Calendar.getInstance();
// 이것이 시스템의 날짜// 여기에 시,분,초를 0으로 세팅해야 before, after를 제대로 비교함
aDate.set(Calendar.HOUR_OF_DAY,0);
aDate.set(Calendar.MINUTE,0);
aDate.set(Calendar.SECOND,0);
aDate.set(Calendar.MILLISECOND,0);
bDate.set(Calendar.HOUR_OF_DAY,0);
bDate.set(Calendar.MINUTE,0);
bDate.set(Calendar.SECOND,0);
bDate.set(Calendar.MILLISECOND,0);
if(aDate.after(bDate)) // aDate가 bDate보다 클 경우 출력
System.out.println("시스템 날짜보다 뒤일 경우 aDate = "+dateForm.format(aDate.getTime()));
elseif(aDate.before(bDate)) // aDate가 bDate보다 작을 경우 출력
System.out.println("시스템 날짜보다 앞일 경우 aDate = "+dateForm.format(aDate.getTime()));
else // aDate = bDate인 경우
System.out.println("같은 날이구만");
}
}
'Web Programing! > JAVA / JSP' 카테고리의 다른 글
[JSP] 자릿수 만들기 - DecimalFormat() (0) | 2011.09.14 |
---|---|
[JSP] 체크박스로 넘어온 값 배열로 받기 - getParameterValues (0) | 2011.09.14 |
[JSP] split() - 구분자로 나눠진 값들 배열로 나누기 (0) | 2011.09.14 |
[JSP] rs.next() 설명 (1) | 2011.09.13 |
[JSP] 방문카운트 (0) | 2011.09.13 |
[JSP] get방식 한글 처리 Encode , Decode (0) | 2011.09.13 |
[JSP] HSSFCell seEncoding method was deprecated (0) | 2011.09.13 |