시스템의 밀리초 구하기.(국제표준시각(UTC, GMT) 1970/1/1/0/0/0 으로부터 경과한 시각) ------------------------------------------------------------------ // 밀리초 단위(*1000은 1초), 음수이면 이전 시각 long time = System.currentTimeMillis ( ); System.out.println ( time.toString ( ) ); ------------------------------------------------------------------
현재 시각을 가져오기. ------------------------------------------------------------------ Date today = new Date (); System.out.println ( today );
결과 : Sat Jul 12 16:03:00 GMT+01:00 2000 ------------------------------------------------------------------
경과시간(초) 구하기 ------------------------------------------------------------------ long time1 = System.currentTimeMillis (); long time2 = System.currentTimeMillis (); system.out.println ( ( time2 - time1 ) / 1000.0 ); ------------------------------------------------------------------
Date를 Calendar로 맵핑시키기 ------------------------------------------------------------------ Date d = new Date ( ); Calendar c = Calendar.getInstance ( ); c.setTime ( d ); ------------------------------------------------------------------
날짜(년/월/일/시/분/초) 구하기 ------------------------------------------------------------------ import java.util.*; import java.text.*;
SimpleDateFormat formatter = new SimpleDateFormat ( "yyyy.MM.dd HH:mm:ss", Locale.KOREA ); Date currentTime = new Date ( ); String dTime = formatter.format ( currentTime ); System.out.println ( dTime ); ------------------------------------------------------------------
날짜(년/월/일/시/분/초) 구하기2 ------------------------------------------------------------------ GregorianCalendar today = new GregorianCalendar ( );
int year = today.get ( today.YEAR ); int month = today.get ( today.MONTH ) + 1; int yoil = today.get ( today.DAY_OF_MONTH );
숫자 12자리를, 다시 날짜로 변환하기 ------------------------------------------------------------------ Date conFromDate = new Date(); long ttl = conFromDate.parse ( "Dec 25, 1997 10:10:10" ); System.out.println ( ttl ); //예 938291839221
Date today = new Date ( ttl ); DateFormat format = DateFormat.getDateInstance ( DateFormat.FULL,Locale.US ); String formatted = format.format ( today ); System.out.println ( formatted ); ------------------------------------------------------------------
특정일로부터 n일 만큼 이동한 날짜 구하기 ------------------------------------------------------------------ 특정일의 시간을 long형으로 읽어온다음.. 날짜*24*60*60*1000 을 계산하여. long형에 더해줍니다. 그리고 나서 Date클래스와 Calender클래스를 이용해서 날짜와 시간을 구하면 됩니다 ------------------------------------------------------------------
특정일에서 일정 기간후의 날짜 구하기2 ------------------------------------------------------------------ //iDay 에 입력하신 만큼 빼거나 더한 날짜를 반환 합니다. import java.util.*;
public String getDate ( int iDay ) { Calendar temp=Calendar.getInstance ( ); StringBuffer sbDate=new StringBuffer ( );
temp.add ( Calendar.DAY_OF_MONTH, iDay );
int nYear = temp.get ( Calendar.YEAR ); int nMonth = temp.get ( Calendar.MONTH ) + 1; int nDay = temp.get ( Calendar.DAY_OF_MONTH );
달에 마지막 날짜 구하기 ------------------------------------------------------------------ for ( int month = 1; month <= 12; month++ ) { GregorianCalendar cld = new GregorianCalendar ( 2001, month - 1, 1 ); System.out.println ( month + "/" + cld.getActualMaximum ( Calendar.DAY_OF_MONTH ) ); } ------------------------------------------------------------------
해당하는 달의 마지막 일 구하기 ------------------------------------------------------------------ GregorianCalendar today = new GregorianCalendar ( ); int maxday = today.getActualMaximum ( ( today.DAY_OF_MONTH ) ); System.out.println ( maxday ); ------------------------------------------------------------------
특정일을 입력받아 해당 월의 마지막 날짜를 구하는 간단한 예제.(달은 -1 해준다.)...윤달 30일 31일 알아오기. ------------------------------------------------------------------ Calendar cal = Calendar.getInstance ( ); cal.set ( Integer.parseInt ( args[0] ), Integer.parseInt ( args [1] ) - 1, Integer.parseInt ( args [2] ) ); SimpleDateFormat dFormat = new SimpleDateFormat ( "yyyy-MM-dd" ); System.out.println ( "입력 날짜 " + dFormat.format ( cal.getTime ( ) ) ); System.out.println ( "해당 월의 마지막 일자 : " + cal.getActualMaximum ( Calendar.DATE ) ); ------------------------------------------------------------------
해당월의 실제 날짜수 구하기 ( 1999년 1월달의 실제 날짜수를 구하기 ) ------------------------------------------------------------------ Calendar calendar = Calendar.getInstance ( ); calendar.set ( 1999, 0, 1 ); int maxDays = calendar.getActualMaximum ( Calendar.DAY_OF_MONTH ); ------------------------------------------------------------------
어제 날짜 구하기 ------------------------------------------------------------------ 오늘날짜를 초단위로 구해서 하루분을 빼주고 다시 셋팅해주면 쉽게 구할수 있죠.. setTime((기준일부터 오늘까지의 초를 구함) - 24*60*60)해주면 되겠죠.. ------------------------------------------------------------------
내일 날짜 구하기 ------------------------------------------------------------------ Date today = new Date ( ); Date tomorrow = new Date ( today.getTime ( ) + (long) ( 1000 * 60 * 60 * 24 ) ); ------------------------------------------------------------------
오늘날짜에서 5일 이후 날짜를 구하기 ------------------------------------------------------------------ Calendar cCal = Calendar.getInstance(); c.add(Calendar.DATE, 5); ------------------------------------------------------------------
날짜에 해당하는 요일 구하기 ------------------------------------------------------------------ //DAY_OF_WEEK리턴값이 일요일(1), 월요일(2), 화요일(3) ~~ 토요일(7)을 반환합니다. //아래 소스는 JSP일부입니다. import java.util.*;
Calendar cal= Calendar.getInstance ( ); int day_of_week = cal.get ( Calendar.DAY_OF_WEEK ); if ( day_of_week == 1 ) m_week="일요일"; else if ( day_of_week == 2 ) m_week="월요일"; else if ( day_of_week == 3 ) m_week="화요일"; else if ( day_of_week == 4 ) m_week="수요일"; else if ( day_of_week == 5 ) m_week="목요일"; else if ( day_of_week == 6 ) m_week="금요일"; else if ( day_of_week == 7 ) m_week="토요일";
두 날짜의 차이를 일수로 구하기 ------------------------------------------------------------------ 각각의 날짜를 Date형으로 만들어서 getTime()하면 long으로 값이 나오거든요(1970년 1월 1일 이후-맞던가?- 1/1000 초 단위로..) 그러면 이값의 차를 구해서요. (1000*60*60*24)로 나누어 보면 되겠죠. ------------------------------------------------------------------
두 날짜의 차이를 일수로 구하기2 ------------------------------------------------------------------ import java.io.*; import java.util.*;
Date today = new Date ( ); Calendar cal = Calendar.getInstance ( ); cal.setTime ( today );// 오늘로 설정.
두 날짜의 차이를 일수로 구하기3 ------------------------------------------------------------------ import java.io.*; import java.util.*;
public class DateDiff { public static int GetDifferenceOfDate ( int nYear1, int nMonth1, int nDate1, int nYear2, int nMonth2, int nDate2 ) { Calendar cal = Calendar.getInstance ( ); int nTotalDate1 = 0, nTotalDate2 = 0, nDiffOfYear = 0, nDiffOfDay = 0;
if ( nYear1 > nYear2 ) { for ( int i = nYear2; i < nYear1; i++ ) { cal.set ( i, 12, 0 ); nDiffOfYear += cal.get ( Calendar.DAY_OF_YEAR ); } nTotalDate1 += nDiffOfYear; } else if ( nYear1 < nYear2 ) { for ( int i = nYear1; i < nYear2; i++ ) { cal.set ( i, 12, 0 ); nDiffOfYear += cal.get ( Calendar.DAY_OF_YEAR ); } nTotalDate2 += nDiffOfYear; }
날짜형식으로 2000-01-03으로 처음에 인식을 시킨후 7일씩 증가해서 1년정도의 날짜를 출력해 주고 싶은데요. ------------------------------------------------------------------ SimpleDateFormat sdf = new SimpleDateFormat ( "yyyy-mm-dd" ); Calendar c = Calendar.getInstance ( );
for ( int i = 0; i < 48; i++ ) { c.clear ( ); c.set ( 2000, 1, 3 - ( i * 7 ) ); java.util.Date d = c.getTime ( ); String thedate = sdf.format ( d ); System.out.println ( thedate ); } ------------------------------------------------------------------
쓰레드에서 날짜 바꾸면 죽는 문제 ------------------------------------------------------------------ Main화면에 날짜와시간이Display되는 JPanel이 있습니다. date로 날짜와 시간을 변경하면 Main화면의 날짜와 시간이 Display되는 Panel에 변경된 날짜가 Display되지 않고 Main화면이 종료되어 버립니다.
문제소스: public void run ( ) { while ( true ) { try{ timer.sleep ( 60000 ); } catch ( InterruptedException ex ) { }
public boolean datevalid ( ) { return dateValidity; }
public static void main ( String args [] ) { DateCheck dc = new DateCheck ( "2001-02-28" ); System.out.println ( " 유효한 날짜 : " + dc.datevalid ( ) ); } } ------------------------------------------------------------------
두 날짜 비교하기(아래보다 정확) ------------------------------------------------------------------ 그냥 날짜 두개를 long(밀리 세컨드)형으로 비교하시면 됩니다...
이전의 데이타가 date형으로 되어 있다면, 이걸 long형으로 변환하고. 현재 날짜(시간)은 System.currentTimeMillis()메소드로 읽어들이고, 두수(long형)를 연산하여 그 결과 값으로 비교를 하시면 됩니다.
만약 그 결과값이 몇시간 혹은 며칠차이가 있는지를 계산할려면, 결과값을 Calender의 setTimeInMillis(long millis) 메소드를 이용해 설정한다음 각각의 날짜나 시간을 읽어오시면 됩니다 ------------------------------------------------------------------
두 날짜 비교하기2 ------------------------------------------------------------------ //Calendar를 쓸 경우 데이타의 원본을 고치기 때문에 clone()을 사용하여 //복사한 후에 그 복사본을 가지고 비교한다 import java.util.*; import java.util.Calendar.*; import java.text.SimpleDateFormat;
public class DayComparisonTest { public static void main(String args[]) { Calendar cal = Calendar.getInstance(); SimpleDateFormat dateForm = new SimpleDateFormat("yyyy-MM-dd");
Calendar aDate = Calendar.getInstance(); // 비교하고자 하는 임의의 날짜 aDate.set(2001, 0, 1);
Calendar bDate = 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 );
if (aDate.after(bDate)) // aDate가 bDate보다 클 경우 출력 System.out.println("시스템 날짜보다 뒤일 경우 aDate = " + dateForm.format(aDate.getTime())); else if (aDate.before(bDate)) // aDate가 bDate보다 작을 경우 출력 System.out.println("시스템 날짜보다 앞일 경우 aDate = " + dateForm.format(aDate.getTime())); else // aDate = bDate인 경우 System.out.println("같은 날이구만"); } }