RadarURL
응용 프로그래밍

java 에서 날짜데이터를 문자형로 변환

by JaeSoo posted Jun 24, 2007
?

Shortcut

PrevPrev Article

NextNext Article

ESCClose

Larger Font Smaller Font Up Down Go comment Print

import java.util.*;
public class time1 {


 public String time()
 {
  int year, mon, dat, mi, ho, se;
 
 
   Calendar ti = Calendar.getInstance();
   //get()메소드는 리턴형이 int형이다.
   year = ti.get(Calendar.YEAR); 
   mon = ti.get(Calendar.MONTH)+1;
   ho = ti.get(Calendar.HOUR_OF_DAY);
   mi = ti.get(Calendar.MINUTE);
   se = ti.get(Calendar.SECOND);
 //int 형을 String 형으로 변환하려면 String의 valueOf()라는 메소드를 사용하면된다.
 
 /*static String valueOf(int i)
     * Returns the string representation of the int argument.
 */
//첫번째 방법은 valueOf()메소드를 사용하여 정수형을 String형으로 변환하는것이다. 


String date = String.valueOf(year)+""+String.valueOf(mon)+""+String.valueOf(ho)+""+String.valueOf(mi)+""+String.valueOf(se);


//두번째 방법은 더 간단합니다. 문자열과 int형의 결합은 문자열로 출력됩니다.
 String date1 = ""+year+""+mon+""+ho+""+mi+""+se;
 
 return date;
 //return date1; 이것도 같은결과를 리턴합니다.


 }


  public static void main(String args[]) {


 time1 t = new time1();


 System.out.println(t.time());
  }
}


top




re: java 에서 날짜데이터를 문자형로 변환이 가능 한가요?


free0829 (2007-05-09 18:19 작성)1대1 질문하기


신고신고|이의제기이의제기



질문자 평
추후 확장까지 ^^ 친절하시게 설명해 주시다니 이자료를 보고 다른 것 까지 입력오류를 체크 할 수 있게 되었습니다. 감사합니다.



import java.util.Calendar;
public class A {
    public String time() {
        int year, mon, dat, mi, ho, se;


        Calendar ti = Calendar.getInstance();


        year = ti.get(Calendar.YEAR);


        // Calendar.MONTH 에서 1을 더해주는 이유는
        // Calendar.MONTH를 하면 1월이면 0을 돌려주고 2월이면 1을 돌려주게 됩니다.
        // 그러므로 돌려주는 값에 1을 더해주어야 현재 달을 알 수 있습니다.
        mon = ti.get(Calendar.MONTH)+1;


        ho = ti.get(Calendar.HOUR_OF_DAY);
        mi = ti.get(Calendar.MINUTE);
        se = ti.get(Calendar.SECOND);


        // 년도는 앞자리가 0 일 경우가 없기 때문에 그냥 문자열로 변환해 줍니다.
        String sYear = String.valueOf(year);


        // 월 또는 일 은 1 ~ 9 월달은 한자리수로 나오기 때문에 2자리의 문자열로 만들어 줍니다.
        String sMonth = addZero(mon, 2);


        return sYear + sMonth;
    }


 


    // 입력받은 int 형을 문자열로 바꾸고 입력받은 자리수만큼 "0"을 붙여서 리턴해 줍니다.
    public String addZero(int val, int size) {
        String str = String.valueOf(val);       // int 형 값을 문자열로 변환합니다.
        int istrSize = 0;                       // 변환된 문자열의 길이를 담을 변수 입니다.
        StringBuffer sb = new StringBuffer();   // 앞에 붙일 문자열 0 들을 넣을 StringBuffer 입니다.
        istrSize = str.getBytes().length;       // 문자열의 길이를 구합니다.
        if(size < istrSize) {                   // 맟출려는 자리수보다 문자열의 길이가 더 크면 에러를 출력합니다.
            System.out.println("맞추고자 하는 길이보다 변환한 문자열의 길이가 더 커요~");
            return "Error";
        }
        // size는 내가 맞추고자할 길이이고 istrSize는 현재 문자열의 길이 이므로
        // 맞추고자할 길이에서 문자열 길이를 뺀 만큼 앞에다 붙일 문자열 "0" 을 만듭니다.
        for(int i=0; i<(size-istrSize); i++) {
            sb.append("0");         // "0" 을 하나 붙입니다.
        }
        str = sb.toString() + str;  // 만들어진 문자열 "0..."과 int형을 변환한 문자열을 합쳐서 리턴합니다.
        return str;
    }


 


    public static void main(String args[]) {
        A t = new A();
        System.out.println(t.time());
    }
}


 


 


int 형을 String 형으로 변환하는것은 앞에 분들의 말씀처럼


String 클래스에 valueOf() 라는 메소드가 있습니다.


사용하실때는 그냥


String.valueOf(변환할int형 또는 숫자);


이렇게 하시면 됩니다.


 


그리고 날짜의 년도는 문제가 안되지만 월 이나 일 같은 경우는


한자리수가 나올 수 있기때문에 앞에 0을 채워 2자리로 만들어 주어야 합니다.


아마 이부분 때문에 고생하시는듯 한데요.


그건 위 소스처럼 메소드를 따로 만들어서 사용하시면 됩니다.


 


그리고 월에 1을 더하는 이유는 위 소스에 주석을 참고 하시면 될것 같구요.


 


리턴하실때는 무조건 하나만 리턴할 수 있습니다.


그러므로 위 소스 처럼 하나로 합쳐주셔서 넘기시거나


아니면 배열에 넣어서..또는 ArrayList 클래스, Vector 클래스 등등을 사용하는 방법..


여러가지가 있습니다.


 


 


 


 


top




2번 문제와 추가 질문은 저도 잘 모르겠네요...


zxcv16384 (2007-05-09 15:15 작성)1대1 질문하기


신고신고|이의제기이의제기





import java.util.Calendar;  // Calendar을 사용하기 위해 import함.


public class time1
{
 Calendar ti = Calendar.getInstance();
 
 int year, mon, dat, mi, ho, se;   
 String strCalendar;     // 정수로 받은 날짜 값들을 담아두기 위해 선언한 문자열 변수
 
 public time1()
 {
  this.getCalendar3();   // 생성자에서 getCalendar3() 메소드를 호출해야만 실행됨...
          // 왜 그러냐고 물어보신다면... 저도 초보라 모름...
 }
 
 public String getCalendar1()  // 질문자 님은 int형으로 하셨지만 전 String형으로 고침
 {
     year = ti.get(Calendar.YEAR);
     mon = ti.get(Calendar.MONTH)+1;  // 질문자 님이 추가 질문으로 물어보신건데 이건 JAVA API를
              // 보시기 바랍니다...
              // 그리고 인터넷에서 찾다보면 알 수 있을지도...
     ho = ti.get(Calendar.HOUR_OF_DAY);
     mi = ti.get(Calendar.MINUTE);
     se = ti.get(Calendar.SECOND);
    
     /*
      * 여기서 String.valueOf() 메소드는 질문자 님이 물어보던 정수형을 문자형으로 바꿔주는
      * 메소드 입니다.
      */
     strCalendar = String.valueOf(year) + String.valueOf(mon) + String.valueOf(ho)
          + String.valueOf(mi) + String.valueOf(se);
    
     // 숫자끼리 더하기를 하면 받아온 값들이 다 더하기 때문에 문자열로 바꾸어서 리턴 시킴.
     return strCalendar;
 }
 
 public String getCalendar2()  
 {
     year = ti.get(Calendar.YEAR);
     mon = ti.get(Calendar.MONTH)+1;
     ho = ti.get(Calendar.HOUR_OF_DAY);
     mi = ti.get(Calendar.MINUTE);
     se = ti.get(Calendar.SECOND);
    
     /*
      * getCalendar1() 메소드와 차이점은 숫자들 사이에 ""와 +기호를 사용하여
      * 정수가 문자열로 바뀌어지기 때문에 String형으로 받으면 됨...
      *
      * 참고 - 저도 초보라 설명을 잘 못함...
      */
     strCalendar = year + "" + mon + "" + ho + "" + mi + "" + se;
    
     return strCalendar;
 }
 
 public void getCalendar3()
 {
  year = ti.get(Calendar.YEAR);
     mon = ti.get(Calendar.MONTH)+1;
     ho = ti.get(Calendar.HOUR_OF_DAY);
     mi = ti.get(Calendar.MINUTE);
     se = ti.get(Calendar.SECOND);
  
     /*
      * 위 두개의 메소드와 차이점은 getCalendar3() 메소드는 생성자가 생성할때
      * 실행이 되는것임.
      * 이거도 getCalendar2() 메소드처럼 String형 변수에 넣는 방법은 똑같음.
      */  
    
     // 1번 방법
     strCalendar = year + "" + mon + "" + ho + "" + mi + "" + se;
     System.out.println("문자열 변수에 대입해서 출력 : " + strCalendar);
    
     // 2번 방법
  System.out.println("정수들 사이에 따옴표와 더하기 기호를 이용해서 사용한 출력 : " + year + "" + mon + "" + ho + "" + mi + "" + se);
  
 }


 public static void main(String args[])
 {
  time1 t = new time1();


  System.out.println("String.valueOf()를 사용하여 정수형을 문자형으로 바꾼거 : " + t.getCalendar1());
  System.out.println("정수사이에 따옴표와 더하기를 집어 넣어 문자열로 만들고 String형에 대입 한거 : " + t.getCalendar2());
 }
}

출처 : http://kin.naver.com/db/detail.php?d1id=1&dir_id=10106&eid=g21Ni8s141TvYzuSDwzVMfhpGTD7hO6F&qb=amF2YSB0aW1lIGRhdGUgx9S89g==

Who's JaeSoo

profile

http://JaeSoo.com Administrator


Articles

1 2 3 4 5 6 7 8 9 10