시스템의 밀리초 구하기.(국제표준시각(UTC, GMT) 1970/1/1/0/0/0 으로부터 경과한 시각)
1 2 3 | // 밀리초 단위(*1000은 1초), 음수이면 이전 시각 long time = System.currentTimeMillis ( ); System.out.println ( time.toString ( ) ); |
현재 시각을 가져오기.
1 2 | Date today = new Date (); System.out.println ( today ); |
결과 : Sat Jul 12 16:03:00 GMT+01:00 2000
경과시간(초) 구하기
1 2 3 | long time1 = System.currentTimeMillis (); long time2 = System.currentTimeMillis (); system.out.println ( ( time2 - time1 ) / 1000.0 ); |
Date를 Calendar로 맵핑하기
1 2 3 | Date d = new Date ( ); Calendar c = Calendar.getInstance ( ); c.setTime ( d ); |
날짜(년/월/일/시/분/초) 구하기
1 2 3 4 5 6 | 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
1 2 3 4 5 6 7 8 9 10 | 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 ); <p></p> <p>GregorianCalendar gc = new GregorianCalendar ( );</p> <p>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 ) ); </p> |
날짜(년/월/일/시/분/초) 구하기3
1 2 3 | DateFormat df = DateFormat.getDateInstance(DateFormat.LONG, Locale.KOREA); Calendar cal = Calendar.getInstance(Locale.KOREA); nal = df.format(cal.getTime()); |
- 표준시간대를 지정하고 날짜를 가져오기.
1 2 3 4 5 6 7 8 9 10 11 | TimeZone jst = TimeZone.getTimeZone ( "JST" ); Calendar cal = 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초
영어로된 날짜를 숫자로 바꾸기
1 2 | Date myDate = new Date ( "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"로 바꾸기
1 2 3 4 5 6 7 | SimpleDateFormat formatter_one = new SimpleDateFormat ( "EEE, dd MMM yyyy hh:mm:ss" ,Locale.ENGLISH ); SimpleDateFormat formatter_two = new SimpleDateFormat ( "yyyy-MM-dd" ); String inString = "Sun, 5 Dec 1999 00:07:21" ; ParsePosition pos = new ParsePosition ( 0 ); Date frmTime = formatter_one.parse ( inString, pos ); String outString = formatter_two.format ( frmTime ); System.out.println ( outString ); |
숫자 12자리를, 다시 날짜로 변환하기
1 2 3 4 5 6 7 8 | 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | //iDay 에 입력하신 만큼 빼거나 더한 날짜를 반환 합니다. import java.util.*; public String getDate ( int iDay ) { Calendar temp=Calendar.getInstance ( ); 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 ); StringBuffer sbDate= new StringBuffer ( ); sbDate.append ( nYear ); if ( nMonth < 10 ) sbDate.append ( "0" ); sbDate.append ( nMonth ); if ( nDay < 10 ) sbDate.append ( "0" ); sbDate.append ( nDay ); return sbDate.toString ( ); } |
현재날짜에서 2달전의 날짜를 구하기
1 2 3 4 5 6 7 8 | //오늘 날짜를 기준으루.. Calendar cal = Calendar.getInstance ( ); //2개월 전.... cal.add ( cal.MONTH, - 2 ); System.out.println ( cal.get ( cal.YEAR ) ); System.out.println ( cal.get ( cal.MONTH ) + 1 ); System.out.println ( cal.get ( cal.DATE ) ); |
달에 마지막 날짜 구하기
1 2 3 4 5 | 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 ) ); } |
해당하는 달의 마지막 일 구하기
1 2 3 | GregorianCalendar today = new GregorianCalendar ( ); int maxday = today.getActualMaximum ( ( today.DAY_OF_MONTH ) ); System.out.println ( maxday ); |
특정일을 입력받아 해당 월의 마지막 날짜를 구하는 간단한 예제.(달은 -1 해준다.)...윤달 30일 31일 알아오기.
1 2 3 4 5 | 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월달의 실제 날짜수를 구하기 )
1 2 3 | Calendar calendar = Calendar.getInstance ( ); calendar.set ( 1999 , 0 , 1 ); int maxDays = calendar.getActualMaximum ( Calendar.DAY_OF_MONTH ); |
어제 날짜 구하기
오늘날짜를 초단위로 구해서 하루분을 빼주고 다시
셋팅해주면 쉽게 구할수 있죠..
setTime((기준일부터 오늘까지의 초를 구함) - 24*60*60)해주면 되겠죠..
어제 날짜 구하기2
1 2 3 4 5 6 7 8 9 10 11 | import java.util.*; public static Date getYesterday ( Date today ) { if ( today == null ) throw new IllegalStateException ( "today is null" ); Date yesterday = new Date ( ); yesterday.setTime ( today.getTime ( ) - ( ( long ) 1000 * 60 * 60 * 24 ) ); return yesterday; } |
내일 날짜 구하기
1 2 | Date today = new Date ( ); Date tomorrow = new Date ( today.getTime ( ) + ( long ) ( 1000 * 60 * 60 * 24 ) ); |
내일 날짜 구하기2
1 2 3 | Calendar today = Calendar.getInstance ( ); today.add ( Calendar.DATE, 1 ); Date tomorrow = today.getTime ( ); |
오늘날짜에서 5일 이후 날짜를 구하기
1 2 | Calendar cCal = Calendar.getInstance(); c.add(Calendar.DATE, 5 ); |
날짜에 해당하는 요일 구하기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | //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= "토요일" ; |
콤보박스로 선택된 날짜(예:20001023)를 통해 요일을 영문으로 가져오기
1 2 3 4 5 | //gc.get(gc.DAY_OF_WEEK); 하면 일요일=1, 월요일=2, ..., 토요일=7이 나오니까, //요일을 배열로 만들어서 뽑아내면 되겠죠. GregorianCalendar gc= new GregorianCalendar ( 2000 , 10 - 1 , 23 ); String [] dayOfWeek = { "" , "Sun" , "Mon" , .... , "Sat" }; String yo_il = dayOfWeek ( gc.get ( gc.DAY_OF_WEEK ) ); |
두 날짜의 차이를 일수로 구하기
각각의 날짜를 Date형으로 만들어서 getTime()하면
long으로 값이 나오거든요(1970년 1월 1일 이후-맞던가?- 1/1000 초 단위로..)
그러면 이값의 차를 구해서요. (1000*60*60*24)로 나누어 보면 되겠죠.
두 날짜의 차이를 일수로 구하기2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | import java.io.*; import java.util.*; Date today = new Date ( ); Calendar cal = Calendar.getInstance ( ); cal.setTime ( today ); // 오늘로 설정. Calendar cal2 = Calendar.getInstance ( ); cal2.set ( 2000 , 3 , 12 ); // 기준일로 설정. month의 경우 해당월수-1을 해줍니다. int count = 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | 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; } 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; return nTotalDate1-nTotalDate2; } public static void main ( String args[] ) { System.out.println ( "" + GetDifferenceOfDate ( 2000 , 6 , 15 , 1999 , 8 , 23 ) ); } } |
파일에서 날짜정보를 가져오기
1 2 3 4 5 6 7 8 9 10 11 | File f = new File ( directory, file ); Date date = new Date ( f.lastModified ( ) ); Calendar cal = 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년정도의 날짜를 출력해 주고 싶은데요.
1 2 3 4 5 6 7 8 9 10 | 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화면이 종료되어 버립니다.
문제소스:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | public void run ( ) { while ( true ) { try { timer.sleep ( 60000 ); } catch ( InterruptedException ex ) { } lblTimeDate.setText ( fGetDateTime ( ) ); repaint ( ); } } public String fGetDateTime ( ) { final int millisPerHour = 60 * 60 * 1000 ; String DATE_FORMAT = "yyyy / MM / dd HH:mm" ; SimpleDateFormat sdf = new SimpleDateFormat ( DATE_FORMAT ); SimpleTimeZone timeZone = new SimpleTimeZone ( 9 * millisPerHour, "KST" ); sdf.setTimeZone ( timeZone );<p></p> long time = System.currentTimeMillis ( ); Date date = new Date ( time ); return sdf.format ( date ); } |
해답:
1 2 3 4 5 6 7 8 | // 날짜와 요일 구한다. timezone 으로 날짜를 다시 셋팅하시면 됨니다. public String getDate ( ) { Date now = new Date ( ); SimpleDateFormat sdf4 = new SimpleDateFormat ( "yyyy/MM/dd HH:mm EE" ); sdf4.setTimeZone ( TimeZone.getTimeZone ( "Asia/Seoul" ) ); return sdf4.format ( now ); } |
날짜와 시간이 유효한지 검사하려면...?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | import java.util.*; import java.text.*; public class DateCheck { boolean dateValidity = true ; DateCheck ( String dt ) { try { DateFormat df = DateFormat.getDateInstance ( DateFormat.SHORT ); df.setLenient ( false ); Date dt2 = df.parse ( dt ); } catch ( ParseException e ) { this .dateValidity = false ; } catch ( IllegalArgumentException e ) { this .dateValidity = false ; } } 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | 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 ); 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())); else if (aDate.before(bDate)) // aDate가 bDate보다 작을 경우 출력 System.out.println( "시스템 날짜보다 앞일 경우 aDate = " + dateForm.format(aDate.getTime())); else // aDate = bDate인 경우 System.out.println( "같은 날이구만" ); } } |
// 현재 년도 -100년 리스트 가져오기.
Calendar oCalendar = Calendar.getInstance( ); // 현재 날짜/시간 등의 각종 정보 얻기
List<Object> years = new ArrayList<>();
int thisYear = oCalendar.get(Calendar.YEAR); // 올해
int beforeYear = oCalendar.get(Calendar.YEAR) - 100; // 올해
for (int i = thisYear; i > beforeYear; i--){
years.add(i);
}
mav.addObject("years",years);
// 객체형
years = getCalender(); //호출
public static List<Object> getCalender(){
Calendar oCalendar = Calendar.getInstance( ); // 현재 날짜/시간 등의 각종 정보 얻기
List<Object> years = new ArrayList<>();
int thisYear = oCalendar.get(Calendar.YEAR); // 올해
int beforeYear = oCalendar.get(Calendar.YEAR) - 100; // 올해
for (int i = thisYear; i > beforeYear; i--){
years.add(i);
}
return years; //계산후 리턴
}
//* 현재날짜에서 DataVo에 입력된 값(생년) 가져와서 현재 나이 구하기.
Calendar oCalendar = Calendar.getInstance( ); // 현재 날짜/시간 등의 각종 정보 얻기
int resultYear = ((oCalendar.get(Calendar.YEAR)) - Integer.valueOf(param.getAge()));
//*Java 생일로 나이 구하기
public static int getAgeFromBirthday(Date birthday) {
Calendar birth = new GregorianCalendar();
Calendar today = new GregorianCalendar();
birth.setTime(birthday);
today.setTime(new Date());
int factor = 0;
if (today.get(Calendar.DAY_OF_YEAR) < birth.get(Calendar.DAY_OF_YEAR)) {
factor = -1;
}
return today.get(Calendar.YEAR) - birth.get(Calendar.YEAR) + factor;
}
import java.util.Calendar;
public class Foo {
public static void main(String args[]) {
Calendar oCalendar = Calendar.getInstance( ); // 현재 날짜/시간 등의 각종 정보 얻기
System.out.println("현재 년: " + oCalendar.get(Calendar.YEAR));
System.out.println("현재 월: " + (oCalendar.get(Calendar.MONTH) + 1));
System.out.println("현재 일: " + oCalendar.get(Calendar.DAY_OF_MONTH));
System.out.println(); // 다음줄로 행갈이 하기
System.out.println("현재 시: " + oCalendar.get(Calendar.HOUR_OF_DAY)); // 24시간제
System.out.println("현재 분: " + oCalendar.get(Calendar.MINUTE));
System.out.println("현재 초: " + oCalendar.get(Calendar.SECOND));
System.out.println();
// 12시간제로 현재 시
System.out.print("현재 시: " + oCalendar.get(Calendar.HOUR));
if (oCalendar.get(Calendar.AM_PM) == 0) System.out.println("am");
else System.out.println("pm");
System.out.println("현재 초의 1000분의1초: " + oCalendar.get(Calendar.MILLISECOND));
System.out.println("현재 요일: " + oCalendar.get(Calendar.DAY_OF_WEEK)); // 일요일 = 1
System.out.println("올해 몇 번째 날: " + oCalendar.get(Calendar.DAY_OF_YEAR)); // 1월 1일 = 1
System.out.println("올해 몇 번째 주: " + oCalendar.get(Calendar.WEEK_OF_YEAR)); // 1월 1일은 = 1
System.out.println("이번 달의 몇 번째 주: " + oCalendar.get(Calendar.WEEK_OF_MONTH)); // 첫째 주 = 1
}
}
----------------------------------------------------------------------------------
실행 결과:
현재 년: 2006
현재 월: 10
현재 일: 14
현재 시: 16
현재 분: 12
현재 초: 16
현재 시: 4pm
현재 초의 1000분의1초: 505
현재 요일: 7
올해 몇 번째 날: 287
올해 몇 번째 주: 41
이번 달의 몇 번째 주: 2
'JAVA' 카테고리의 다른 글
2. 저장된 파일에서 필요한 값 찾기. readLine (0) | 2014.07.23 |
---|---|
1. URL 경로 파일 다운로드해서 TXT형 저장하기 (0) | 2014.07.23 |
[Java] 나머지 % (0) | 2014.06.01 |
JCF(Java Collection Framework) : List / Map / Set (0) | 2014.01.18 |
[JAVA] static , final (0) | 2013.12.18 |