2008년 2월 29일 금요일

JAVA : USE CALENDAR


boolean isAvailableDate(EventMainBean eventMain) throws Exception{
boolean result = false;

String pattern = "yyyyMMdd";

Calendar calendar = Calendar.getInstance();

SimpleDateFormat formatter = new SimpleDateFormat(pattern, new Locale("ko","KOREA"));

Date stDate = formatter.parse(eventMain.getDistributionStDate());
Date edDate = formatter.parse(eventMain.getDistributionEdDate());

Calendar stDateInCalendar = (Calendar)calendar.clone();
stDateInCalendar.setTime(stDate);

Calendar edDateInCalendar = (Calendar)calendar.clone();
edDateInCalendar.setTime(edDate);
edDateInCalendar.add(Calendar.DATE, 1);

if ( calendar.after(stDateInCalendar) && calendar.before(edDateInCalendar) )
result = true ;

System.out.println(calendar.after(stDateInCalendar));
System.out.println(calendar.before(edDateInCalendar));
System.out.println(result);
return result;
}

2008년 2월 20일 수요일

JAVA : USE DATAFORMAT






[Date]날짜와 시간표시



자바에서 날짜와 시간을 표시하는 방법

1. java.util package에 있는 Data나 Calendar클래스를 이용하는 방법
2. java.text package에 있는 DateFormat, SimpleDateFormat, DateFormatSymbols 클래스들을 이용

[SimpleDateFormat 클래스]

원하는 시간, 날짜표기를 쉽게 할 수 있는 방법중의 하나로 원하는 포맷을 마음대로 지정할 수 있다.

  • 1999년 11월 10일
  • 1999/11/10
  • 1999년 11월 10일 오전 10시 55분

import java.io.*;
import java.util.*;
import java.text.*;

public class SimpleDateFormatTest {

 public static void main(String args[]){
  
  Date date;
  SimpleDateFormat formatter;
  String pattern = "yyyy년 M월 d일  a h시 m분";
  String result;
  
  formatter = new SimpleDateFormat(pattern, new Locale("ko","KOREA"));
  date = new Date();
  result = formatter.format(date);
  System.out.println("result : " + result);
  
 }
 
  public String en(String ko) {
    String new_str = null;
    try {
   new_str  = new String(ko.getBytes("KSC5601"), "8859_1");
    } catch(UnsupportedEncodingException ex) { }
    return new_str;
  }

  public String ko(String en) {
    String new_str = null;
    try {
   new_str  = new String(en.getBytes("8859_1"), "KSC5601");
    } catch(UnsupportedEncodingException ex) { }
    return new_str;
  }
 
}

 

** 참고 **

SimpleDateFormat에서 사용하는 Symbol text
Symbol Meaning Presentation Example
G era designator (Text) AD
y year (Number) 1996
M month in year (Text & Number) July & 07
d day in month (Number) 10
h hour in am/pm (1~12)(Number) 12
H hour in day (0~23) (Number)0
m minute in hour (Number)30
s second in minute (Number)55
S millisecond (Number) 978
E day in week (Text) Tuesday
D day in year (Number)189
F day of week in month (Number) 2 (2nd Wed in July)
w week in year (Number) 27
W week in month (Number) 2
a am/pm marker (Text) PM
k hour in day (1~24) (Number) 24
K hour in am/pm (0~11)(Number) 0
z time zone (Text) Pacific Standard Time
' escape for text (Delimiter) 
''single quote (Literal) 

** 일반적으로 많이 사용되는 패턴들 **

Format PatternResult
"yyyy.MM.dd G 'at' hh:mm:ss z" 1996.07.10 AD at 15:08:56 PDT
"EEE, MMM d, ''yy"Wed, July 10, '96
"h:mm a" 12:08 PM
"hh 'o''clock' a, zzzz"12 o'clock PM, Pacific Daylight Time
"K:mm a, z"0:00 PM, PST
"yyyyy.MMMMM.dd GGG hh:mm aaa"1996.July.10 AD 12:08 PM



2008년 2월 13일 수요일

JAVA SCRIPT - DYNAMIC TABLE


function addEventPresentRow() {
var row = document.createElement("tr");
var cell = document.createElement("td");
var cell2 = document.createElement("td");

var input = document.createElement("input");
input.setAttribute("type", "text");
input.setAttribute("name", "present");

var button = document.createElement('input');
if(button.getAttribute('onclick')){ //else IE
button.setAttribute('onclick','delRow(this)');
} else{ //IE
button = document.createElement("<input onclick=\"delRow(this) \">");
}
button.setAttribute("type", "button");
button.setAttribute("value", "-");

cell.appendChild(input);
row.appendChild(cell);
cell2.appendChild(button);
row.appendChild(cell2);

document.getElementById("targetBody").appendChild(row);
}

 
function delEventPresentRow(buttonObj) {
var tableBody = document.getElementById("targetBody");
var index = buttonObj.parentElement.parentElement.rowIndex;
tableBody.removeChild(tableBody.childNodes[index]);
}

2008년 2월 12일 화요일

JAVA SCRIPT - setAttribute: ONCLICK

당황스럽게도 IE에선 setAttribute에서 onclick을 사용하지 못한다.
다음과 같은 방법으로 우회하자.


var button = document.createElement('input');
if(obj.getAttribute('onclick')){ //IE 외
button.setAttribute('onclick',doDel(this)');
} else{ //IE
button = document.createElement('<input onclick="doDel(this)">');
}
button.setAttribute("type", "button");
button.setAttribute("value", "delete");

2008년 2월 11일 월요일

JAVA SCRIPT - COOKIE

이 요약은 사용할 수 없습니다. 이 글을 보려면 여기를 클릭하세요.

2008년 2월 3일 일요일

ORACLE - DECODE TIP

decode 문은 일반적으로 값을 치환하는데 쓰입니다.

* 컬럼 1개를 여러개의 값으로 비교할경우..
col1 의 값이 1,2,3 인경우 각각 'ONE', 'TWO', 'THREE' 로 변환하고자 한다면,

decode(col1, 1, 'ONE', 2, 'TWO', 3, 'THREE', 'MANY')

1,2,3 이 아닌경우는 'MANY' 가 되겠죠...

* 컬럼 여러개를 한개의 값으로 비교할경우
decode(2, col1, 'col1 is TWO', col2, 'col2 is TWO', null)


* 단방향 범위를 비교하는경우
만약 25 보다 큰경우엔 25 만 리턴하고 작은경우엔 해당컬럼의 값을
리턴하고자 한다면,
decode(sign(col1-25), -1, col1, 25)

처럼 사용하면 되겠죠.

* 다차원 통계에 응용(group by 와 조합)
그룹 아이디별로 합산하는 쿼리는 일반적으로 아래와같습니다.

select grp_id, sum(score)
from GRP_SCORE_TB
group by grp_id

만약..그룹별로 총계를 내고, 그룹별 총계 합산한 총합산을 내고싶다면?
다음과같이 카티션 곱을 응용하고, decode로 선택적인 그룹핑을 해주시면
됩니다.

select MAX(decode(gubun, 1, grp_id, '총계')),
sum(score)
from GRP_SCORE_TB
cross join (select level as gubun from dual connect by level < 3)
group by gubun, decode(gubun, 1, grp_id, null)


이려면,

a001 200
a004 122
a003 27
총계 347

과 같은 결과를 낼수 있습니다.

※ 몇가지 예로 decode 의 활용을 알아보았습니다. 이외에도 order by 등에도
사용하면, 위의 group by 에 사용한것처럼, 선택적인 sorting 이 이루어지게
이용될수도 있습니다.