자바 날짜/시간 계산 예제 코드 :: Java Date Code Snippet

update java8 부터는 JodaTime에 기반한 패키지가 포함되어 훨씬 간단하고 쉬운 방법으로 일자관련 기능을 사용할 수있습니다. http://www.yunsobi.com/blog/649

시스템의 밀리초 구하기.(국제표준시각(UTC, GMT) 1970/1/1/0/0/0 으로부터 경과한 시각)
[code]
// 밀리초 단위(*1000은 1초), 음수이면 이전 시각
long time = System.currentTimeMillis ( );
System.out.println ( time.toString ( ) );
[/code]

현재 시각을 가져오기.
[code]
Date today = new Date ();
System.out.println ( today );
[/code]
결과 : Sat Jul 12 16:03:00 GMT+01:00 2000

경과시간(초) 구하기
[code]
long time1 = System.currentTimeMillis ();
long time2 = System.currentTimeMillis ();
system.out.println ( ( time2 - time1 ) / 1000.0 );
[/code]

Date를 Calendar로 맵핑하기
[code]
Date d = new Date ( );
Calendar c = Calendar.getInstance ( );
c.setTime ( d );
[/code]

날짜(년/월/일/시/분/초) 구하기
[code] 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 ); [/code]

날짜(년/월/일/시/분/초) 구하기2
[code] 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 );

GregorianCalendar gc = new GregorianCalendar ( );
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 ) ); [/code]

날짜(년/월/일/시/분/초) 구하기3
[code] DateFormat df = DateFormat.getDateInstance(DateFormat.LONG, Locale.KOREA);
Calendar cal = Calendar.getInstance(Locale.KOREA);
nal = df.format(cal.getTime()); [/code]

- 표준시간대를 지정하고 날짜를 가져오기.
[code] TimeZone jst = TimeZone.getTimeZone ("JST");
// 주어진 시간대에 맞게 현재 시각으로 초기화된 GregorianCalender 객체를 반환.
Calendar cal = Calendar.getInstance ( jst );  
// 또는
// 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 ) + "초 " ); [/code]
결과 : 2000년 8월 5일 16시 16분 47초

영어로된 날짜를 숫자로 바꾸기
[code] Date myDate = new Date ( "Sun,5 Dec 1999 00:07:21" );
System.out.println ( myDate.getYear ( ) + "-" + myDate.getMonth ( ) + "-" + myDate.getDay ( ) ); [/code]

"Sun, 5 Dec 1999 00:07:21"를 "1999-12-05"로 바꾸기
[code] 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 ); [/code]

숫자 12자리를, 다시 날짜로 변환하기
[code] Date conFromDate = new Date();
long ttl = conFromDate.parse ( "Dec 25, 1997 10:10:10" );
//예 938291839221
System.out.println ( ttl );  
Date today = new Date ( ttl );
DateFormat format = DateFormat.getDateInstance ( DateFormat.FULL,Locale.US );
String formatted = format.format ( today );
System.out.println ( formatted ); [/code]

특정일로부터 n일 만큼 이동한 날짜 구하기

특정일의 시간을 long형으로 읽어온다음..
날짜*24*60*60*1000 을 계산하여.
long형에 더해줍니다.
그리고 나서 Date클래스와 Calender클래스를 이용해서 날짜와 시간을 구하면 됩니다

특정일에서 일정 기간후의 날짜 구하기2
[code] //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 ( );
} [/code]

현재날짜에서 2달전의 날짜를 구하기
[code] //오늘 날짜를 기준으루..
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 ) ); [/code]

달에 마지막 날짜 구하기
[code] 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 ) );
} [/code]

해당하는 달의 마지막 일 구하기
[code] GregorianCalendar today = new GregorianCalendar ( );
int maxday = today.getActualMaximum ( ( today.DAY_OF_MONTH ) );
System.out.println ( maxday ); [/code]

특정일을 입력받아 해당 월의 마지막 날짜를 구하는 간단한 예제.(달은 -1 해준다.)...윤달 30일 31일 알아오기.
[code] 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 ) ); [/code]

해당월의 실제 날짜수 구하기 ( 1999년 1월달의 실제 날짜수를 구하기 )
[code] Calendar calendar = Calendar.getInstance ( ); calendar.set ( 1999, 0, 1 ); int maxDays = calendar.getActualMaximum ( Calendar.DAY_OF_MONTH ); [/code]

어제 날짜 구하기

오늘날짜를 초단위로 구해서 하루분을 빼주고 다시
셋팅해주면 쉽게 구할수 있죠..
setTime((기준일부터 오늘까지의 초를 구함) - 24*60*60)해주면 되겠죠..

어제 날짜 구하기2
[code] 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;
} [/code]

내일 날짜 구하기
[code] Date today = new Date ( );
Date tomorrow = new Date ( today.getTime ( ) + (long) ( 1000 * 60 * 60 * 24 ) ); [/code]

내일 날짜 구하기2
[code] Calendar today = Calendar.getInstance ( ); today.add ( Calendar.DATE, 1 ); Date tomorrow = today.getTime ( ); [/code]

오늘날짜에서 5일 이후 날짜를 구하기
[code] Calendar cCal = Calendar.getInstance(); c.add(Calendar.DATE, 5);[/code]

날짜에 해당하는 요일 구하기
[code] //DAY_OF_WEEK리턴값이 일요일(1), 월요일(2), 화요일(3) ~~ 토요일(7)을 반환합니다.
//아래 소스 일부입니다.
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="토요일"; [/code]

콤보박스로 선택된 날짜(예:20001023)를 통해 요일을 영문으로 가져오기
[code] //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 ) ); [/code]

두 날짜의 차이를 일수로 구하기

각각의 날짜를 Date형으로 만들어서 getTime()하면
long으로 값이 나오거든요(1970년 1월 1일 이후-맞던가?- 1/1000 초 단위로..)
그러면 이값의 차를 구해서요. (1000*60*60*24)로 나누어 보면 되겠죠.

두 날짜의 차이를 일수로 구하기2
[code] import java.io.*;
import java.util.*;
Date today = new Date ( );
Calendar cal = Calendar.getInstance ( );
// 오늘로 설정.
cal.setTime ( today );  
Calendar cal2 = Calendar.getInstance ( );
// 기준일로 설정. month의 경우 해당월수-1을 해줍니다.
cal2.set ( 2000, 3, 12 );  
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 + "일이 지났습니다." ); [/code]

두 날짜의 차이를 일수로 구하기3
[code] 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 ) );
}
} [/code]

파일에서 날짜정보를 가져오기
[code] 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)); [/code]

날짜형식으로 2000-01-03으로 처음에 인식을 시킨후
7일씩 증가해서 1년정도의 날짜를 출력해 주고 싶은데요.
[code] 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 );
} [/code]

쓰레드에서 날짜 바꾸면 죽는 문제

Main화면에 날짜와시간이Display되는 JPanel이 있습니다.
date로 날짜와 시간을 변경하면 Main화면의 날짜와 시간이 Display되는 Panel에
변경된 날짜가 Display되지 않고 Main화면이 종료되어 버립니다.

문제소스:
[code] 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 );
long time = System.currentTimeMillis ( );
Date date = new Date ( time );
return sdf.format ( date );
} [/code]

해답:
[code] // 날짜와 요일 구한다. 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 );
} [/code]

날짜와 시간이 유효한지 검사하려면...?
[code] 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 ( ) );
}
} [/code]

두 날짜 비교하기(아래보다 정확)

그냥 날짜 두개를 long(밀리 세컨드)형으로 비교하시면 됩니다...

이전의 데이타가 date형으로 되어 있다면, 이걸 long형으로 변환하고.
현재 날짜(시간)은 System.currentTimeMillis()메소드로 읽어들이고,
두수(long형)를 연산하여 그 결과 값으로 비교를 하시면 됩니다.

만약 그 결과값이 몇시간 혹은 며칠차이가 있는지를 계산할려면,
결과값을 Calender의 setTimeInMillis(long millis) 메소드를 이용해
설정한다음 각각의 날짜나 시간을 읽어오시면 됩니다

두 날짜 비교하기2
[code] 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("같은 날이구만");
}
} [/code]

2008/02/26 11:13 2008/02/26 11:13
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다
  1. 2010/07/02 17:36
    자바/ 시간 날짜 예제 Tracked from Make me Funny
  1. Blog Icon
    난학생

    찾고 있던 자료인데 감사해요 ^^

  2. Blog Icon
    DKdak

    아이고.. 한참 찾았는데.. 감사합니다.

  3. Blog Icon
    임진우

    유용한 정보 고맙습니다.

    퍼가겠습니다.

  4. Blog Icon
    최경렬

    시간 차이값을 조사하려고 검색 했는데 필요했던 것보다 더 정리를 잘 해 주셨네요.
    감사합니다.
    담아가겠습니다.

  5. Blog Icon
    JW

    깔끔한 정리 감사합니다.
    담아갈께요~

  6. Blog Icon
    정연규

    좋은 정보 감사합니다.
    출처남기고 담아가겠습니다~

  7. Blog Icon
    전병태

    정보 감사합니다.
    출처 남기고 담아가겠습니다.

  8. 잘 정리된 정보 감사합니다.
    D-Day 기능을 구현하고 있었는데 여기에 딱 있네요.

  9. 정말 좋은 정보 감사합니다.
    출처를 명시하고 퍼가겠습니다.
    다시한번 감사드립니다.

  10. Blog Icon
    sdafasdf

    아 ㅡㅡ 패키지 임포트 왜 빼놔요? ㅄ같네

  11. Blog Icon
    ㅋㅋㅋ

    병신은 님 아닌가요?

  12. Blog Icon
    ㄷㄷ

    코딩 한번이라도 제대로 해보신분이긴 한건지;
    그정돈 기본으로 하실 줄 알아야죠

  13. Blog Icon
    쯧쯧

    지금 공부나 제대로 하실지, 일이나 제대로 하고 계실지...... 수준이 보이네요 쯧쯧.. 나중에 마주치지 않기를 바랄 뿐입니다

  14. Blog Icon

    밥은 드시고 다니시나요???

  15. Blog Icon
    개발자

    와~~~ 정리 잘되어있네요 .. 감사합니다^^

  16. Blog Icon
    나같은사람

    정말 아주 아주 좋은정보 감사 함니다.
    이런 자료많이 올려주시면 감사하겠습니다.
    잘쓰겠습니다

  17. Blog Icon
    허어얼

    정리가 넘 잘되었네요 굿굿

  18. Blog Icon
    민경우

    정말 감사합니다 안드로이드 하나도 모르는데 이런 꿀같은 정보가...

  19. Blog Icon
    배우는자

    안녕하세요 요즘 자바 그레고리아 켈린더 함수 배우는 학생인데요

    그 5일뒤 소스를 제가 그대로 적용 시켜봤는데 뭔가 에러가 나더라구요..

    염치없지만.. 제가 이유를 좀 알고싶은데 혹시 가르쳐주실수 있으신가여

  20. Blog Icon
    배우는자

    아 에러 잡았습니다 소스 감사합니다.

  21. Blog Icon
    김정식

    너무 유용하게 잘 봤습니다.^^

  22. Blog Icon
    감사합니다

    감사합니다!!

  23. 잘 보고 베껴 갑니다.
    함께 보려고
    http://blog.daum.net/andro_java/181
    페이지에 올렸습니다.

  24. Blog Icon

    감사합니다. 잘 보고 갑니다

당신은 투잡족이십니까?

투잡(two jobs)..
국어국립어원 우리말 다듬기에 따르면 '투잡'을
최근 ‘평생직장’ 개념이 사라지면서 경제적 안정을 도모하고 편안한 노후 생활을 위한 자금을 마련하기 위하여
두 가지 직업을 가지고 있는 사람이 점차 늘고 있습니다. 본디부터 가지고 있던 일을 본업으로 하고, 다른 일을
부업 삼아 하는 경우가 대부분인데 때로는 부업 삼아 하던 일이 더 벌이가 좋아서 아예 전업하는 경우도 있다고
합니다. 일반적으로 평일 낮 시간에는 본업에 힘쓰고 주말이나 휴일, 또는 평일 근무 시간 이후에 또 다른 일을
합니다. 이를 가리켜 ‘투잡(two job)’이라고 합니다.


‘투잡(two job)’은 달리 ‘투잡스(two jobs)’라고도 하는데 영어 본래의 뜻을 고려하면 한 사람이 갖는 두 가지
직업 정도를 뜻하는 것으로 볼 수 있습니다. 그러나 우리나라에서는 ‘투잡 시대’, ‘투잡(을) 하다’ 따위로 쓰여
‘한 사람이 두 가지 직업을 갖는 일’을 뜻합니다. 그리고 ‘두 가지 직업을 갖는 무리. 또는 그런 사람’을 가리켜
‘투잡족(two job族)’ 또는 ‘투잡스족(two jobs族)’이라 합니다.

과 같이 정의하고 있습니다.

일전에 제가 본 투잡을 독려하던 어떤 글에서 세컨드잡은 자신의 활동 영역을 넓히는 기회라든지 하는 이유로
메인직업과는 다른 분야의 일을 선택하는 편이 좋다고 주장하던 것이 생각납니다.

하지만 자신의 전문 분야(메인잡)와 같은 또 다른 전문 분야에 뛰어드는 건 현실적으로 쉽지 않죠.
( 발을 담그기도 힘들지만 잘 써주지도 않죠..) 그래서 대개 누구나 손쉽게 시작할 수 있는 일을 찾게되죠.
커피전문점이라든지 라면 장사같은 건 특화된 전문분야라고 보기엔 좀 무리가 있다고 생각됩니다.
해당 일을 하고 계신 분들이 들으면 발끈하실지 모르겠습니다만 어떤 분야에 숙련된 지식 없이 시작할
수 있다면 그건 진입장벽이 낮다는 말이고 누구라도 시작할 가능성이 열려있는 만큼 전문성이 결여되기
십상이라는 제 짧은 생각이니 부디 발끈하시지 말기를..
세컨잡의 전문성에 대한 포스팅이 아닌데 이야기가 샛길로 빠졌군요..

저는 세컨드잡이라고 보기엔 뭣한, 제가 가진 기술을 파는, 아르바이트를 아주 가끔 합니다.
이 블로그의 카테고리를 보시면 짐작하시겠지만 현실의 무수한 문제에 대한 다양한 해결 방법을 시스템 위에
코드로 표현하거나 그렇게 할 수 있는 방법을 제시하는게 제 주업무입니다.
제 쪽 분야의 일이 다 그렇고 그럴 것 같지만, 안을 들여다보면 그렇지만도 않습니다.
하나의 요구사항에 대해 실로 다양한 해결책이 존재한다는게  재미있는 부분입니다.

저는 좋은 IT개발 숙련자가 되기 위해선 좋은 레퍼런스와 코드를 많이 보아야한다고 믿는 편인데요.
좋은 레퍼런스와 코드는 책과 예제 상에 존재하기도 하지만, 리얼월드에서 운용되고 있는 살아있는 코드만큼
좋은 레퍼런스가 있을까요?
살아있는 코드와 그 구조를 보면서 좋은 점과 좋지 않은 점을 분별해 내고, 거기서 얻은 아이디어를 자신의 업무에
적용할 기회를 저는 이 '아르바이트'란 기회를 통해 얻고 있습니다.
이런 이유로 신규개발이 들어가는 일보단, '유지보수' 혹은, '기능추가'와 같은 일들이 더 구미에 맞는 편이지요.

모르겠습니다. '아무리 그래도 그렇지. 회사에 하던 일을 집에서도 또 해?' 라든지
'딴 일 하느라 정작 회사일에 소홀한 거 아냐?'라고 하실 분이 계실지도..
정말 돈 때문이라면 저 역시 제일과는 무관한 부업을 찾았겠죠. 늘 하는 것도 아닌데다 업무에서 느끼는
부담감보다 덜 한 압박으로 제 무기가 녹슬지 않을 기회를 얻을 수 있다고 생각하면 꽤 괜찮은 조건이라고
생각합니다. 외려 기분 전환하는 느낌마저 들 정도니까요.

일의 대가로 약간의 보수를 받긴 하지만 제게 부업의 목적은 '돈'에 있지 않다는 게 이글의 요지라면 요지겠네요.

여러분도 투잡을 하고 계신가요? 하고 계신다면 왜? 어떤 이유로에서 계속하고 계신가요?  
2008/02/26 11:13 2008/02/26 11:13
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다
  1. 학생도 직업으로 분류한다면 저도 투잡이예요~ ^^
    by Tech 4 Group 이승철

  2. 친절히 이름 안 적어도 알고있었는데.. ㅋ
    언젠가 구글에서 프람트로 검색했더니
    자네 홈피가 '저장된'페이지로 남아있더라구..

  3. GDI 도메인 판매 사업 www.beautify.ws

자주 사용되는 ie6 관련 CSS Hack

아래는 버그많은 IE6의 버그들을 집중적으로 잡아낼수있는, IE6 용 CSS hack 들입니다

스타 핵 (* html 을 이용)
별표문자인 전체 선택자를 html 타입 선택자 앞에 오도록 해서 다른브라우져에서 적용되지 않지만 IE계열에서만 적용되는 스타일시트를 정의할 수 있습니다.

a:hover {border:1px;} // 모든 브라우져에서 적용됨
*html a:hover {border:2xp;} // IE 계열에서만 적용됨.

즉 위의 2줄을 적었을경우, IE계열에서는 border:2pxl 스타일이 적용됩니다.
이 스타핵은 IE7에서 적용되지 않습니다.
추가) IE7에서 적용되는 스타핵은 아래와 같습니다.

**html {border:2xp;} // IE7에서만 적용됨.

그렇다면, 모든 IE계열(7버전 포함)에서 동작하는 스타핵은 아래와 같이 하면 됩니다.

*html body, **html body {border:2xp;} // 모든 IE에서만 적용됨.


!important 핵
위의 스타핵은 IE6을 구분하기 위하여 2가지의 선언을 해야합니다. 그러나 한 규칙선언안에서 IE6 이하버전을 위한 선언과 다른 브라우저를 위한 선언을 하고 싶다면 !important 핵을 사용하면 됩니다.

#top {
  position:fixed !important;
  position:static;
}

IE6 버전에서는 한 규칙안에 여러개의 속성을 사용할 수 없으므로, 첫번째 선언을 무시하고 두번째 선언을 적용합니다.
나머지 브라우져에서는 important 키워드가 쓰여진 속성의 우선순위를 높게 인식하기때문에 첫번째 선언을 적용합니다.



언더바핵
가장 많이 알려진 CSS핵입니다.
iE6이하 버전에서는 속성정의자의 _ (언더바)를 무시하고, 인식하는 점을 응용한 핵입니다.

.under {display:inline; _display:block}

두번째 정의된 display 의 _ (언더바)가 없다면, 모든 브라우져에서 display:block 이 적용될 것이나 _ (언더바)가 있기때문에 두번째 속성정의자는 IE6 이하 브라우져를 제외하곤 잘못된 속성정의자로 인식합니다.
따라서 IE6에서만 _display 를 display 로 인식하기때문에 display:block 속성이 적용됩니다.
2008/02/26 02:23 2008/02/26 02:23
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다