티스토리 뷰

날짜와 시간의 형식에 맞춘 String을 DateTime으로 변경해보자.

 

String을 DateTime으로 변경하는 방법은 여러가지 있습니다. 보통 아래방법들이 많이 사용됩니다.

 

1. Convert.ToDateTime("날짜")  - 보통 Type을 변경할때 많이 쓰이는 Convert 함수입니다.

2. DateTime.Parse("날짜") - DateTime Class에서 제공하는 메소드로 Convert.ToDateTime과 별반 차이가 없습니다.

3. DateTime.TryParse("날짜",bool) - Parse()의 확장형으로 변경과 함께 정상적으로 변경이 되었는지 확인값도 리턴합니다.

4. DateTime.ParseExact("날짜","형식") - String에 들어가있는 날짜 형식을 사용자가 지정할수 있습니다.

 

4번의 ParseExact()메소드를 제외하고는(이건 형식을 지정할수 있으니...) 일정한 형식에 맞춰 넣어줘야지 DateTime형으로 정상적으로 변경됩니다. 아래 예제 소스로 하나하나 알아보도록 하겠습니다.

 

1. 날짜 입력시

 

1-1. 년,월,일 구분값은 [스페이스값],[/],[-] 으로만 구분가능하다. (섞여도 상관없습니다.)

DateTime dti = Convert.ToDateTime("2015 11 13");      //변환 가능 (2015년 11월 13일 오후 12:00:00)
DateTime dti = Convert.ToDateTime("2015-11-13");      //변환 가능 (2015년 11월 13일 오후 12:00:00)
DateTime dti = Convert.ToDateTime("2015/11/13");      //변환 가능 (2015년 11월 13일 오후 12:00:00)
DateTime dti = Convert.ToDateTime("2015-11/13");      //변환 가능 (2015년 11월 13일 오후 12:00:00)
DateTime dti = Convert.ToDateTime("2015/11 13");      //변환 가능 (2015년 11월 13일 오후 12:00:00)           
DateTime dti = Convert.ToDateTime("20151113");        //에러 (구분값 없음)
DateTime dti = Convert.ToDateTime("2015_11_13");      //에러 (구분값 에러)
DateTime dti = Convert.ToDateTime("2015:11:13");      //에러 (구분값 에러 :는 시간에서 사용가능)

1-2. 최소한 []과 []을 입력해주어야 한다. (년도는 미입력시 현재 년도로 자동입력됩니다.)

DateTime dti = Convert.ToDateTime("11 13");       //변환 가능 (2015년 11월 13일 오후 12:00:00)
DateTime dti = Convert.ToDateTime("15 11 13");    //변환 가능 (2015년 11월 13일 오후 12:00:00)
DateTime dti = Convert.ToDateTime("30");          //에러
DateTime dti = Convert.ToDateTime("30 15");       //에러 (30월이 없으므로 에러)

1-3. 영어나 한글등 언어로 날짜를 입력시 해당 국가 표기방법으로만 입력해야한다. (섞이면 에러가 발생합니다.)

DateTime dti = Convert.ToDateTime("2015년11월13일");         //변환 가능 (2015년 11월 13일 오후 12:00:00) 
DateTime dti = Convert.ToDateTime("November 13, 2015");      //변환 가능 (2015년 11월 13일 오후 12:00:00)
DateTime dti = Convert.ToDateTime("Nov 13, 2015");           //변환 가능 (2015년 11월 13일 오후 12:00:00)
DateTime dti = Convert.ToDateTime("2015-11월13일");          //에러 (한글표기에 구분값이 들어가서 에러)
DateTime dti = Convert.ToDateTime("2015년11/13");            //에러 (한글표기에 구분값이 들어가서 에러)
DateTime dti = Convert.ToDateTime("11월 13, 2015");          //에러 (영문표기에 한글이 들어가서 에러)
DateTime dti = Convert.ToDateTime("2015Year 11Month 13Day"); //에러 (한국식 표기법을 영문으로 처리해서 에러)

 

2. 시간 입력시

 

2-1. 시간은 [:]으로만 구분가능하다. ('스페이스', '-' , '/' 를 넣으면 날짜로 인식합니다. 날짜는 미입력시 오늘날짜로 입력됩니다.)

DateTime dti = Convert.ToDateTime("10:15:22");        //변환 가능 (2015년 11월 13일 오전 10:15:22)
DateTime dti = Convert.ToDateTime("101522");          //에러 (구분자 에러)
DateTime dti = Convert.ToDateTime("10-15-22");        //에러 (2010년 15월 22일로 인식)
DateTime dti = Convert.ToDateTime("10/15/22");        //에러 (2010년 15월 22일로 인식)
DateTime dti = Convert.ToDateTime("10_15_22");        //에러 (구분자 에러)

2-2. 최소한 []와 []은 입력해주어야 한다. (초는 미입력시 00초로 자동입력됩니다.)

DateTime dti = Convert.ToDateTime("10:15");       //변환 가능 (2015년 11월 13일 오전 10:15:00)
DateTime dti = Convert.ToDateTime("30");          //에러 
DateTime dti = Convert.ToDateTime("30:15");       //에러 (30시가 없으므로 에러)

2-3. 영어나 한글등 언어로 날짜를 입력시 해당 국가 표기방법으로만 입력해야한다. (한국이외에는 xx : xx 표기법만 사용하는듯합니다.)

DateTime dti = Convert.ToDateTime("10시 15분 22초");  //변환 가능 (2015년 11월 13일 오전 10:15:22) 
DateTime dti = Convert.ToDateTime("10:15 22초");      //변환 가능 (?? 이해할수는 없지면 변환 된다..)
DateTime dti = Convert.ToDateTime("10시 15:22");      //에러 (표기방법 뒤섞임)

4. 오전/오후(AM/PM) 구분이 없을경우 24시 기준으로 입력되며 오전/오후 구분이 있을경우 12시 기준으로 입력된다.

DateTime dti = Convert.ToDateTime("PM 10시 15분 22초");   //변환 가능 (2015년 11월 13일 오후 10:15:22) 
DateTime dti = Convert.ToDateTime("오후 10:15:22");       //변환 가능 (2015년 11월 13일 오후 10:15:22)
DateTime dti = Convert.ToDateTime("22:15:22");            //변환 가능 (2015년 11월 13일 오후 10:15:22)
DateTime dti = Convert.ToDateTime("10:15:22 AM");         //변환 가능 (2015년 11월 13일 오전 10:15:22)
DateTime dti = Convert.ToDateTime("22:15:22 AM");         //에러 (오전/오후 구분자가 있을경우 12시간 기준)

 

1번과2번의 날짜/시간 입력방식만 지키면 날짜와 시간 모두 입력시 표기방법이 뒤섞여도 상관없습니다.

(날짜는 영문, 시간은 한글로 입력해도 상관없습니다.)


예제는 모두 Convert.ToDateTime() 메소드만 사용하였지만 DateTime.Parse()메소드도 모두 똑같이 적용됩니다.


나머지 3,4번 메소드는 후에 다시 블로깅하겠습니다.

댓글
최근에 올라온 글
최근에 달린 댓글
글 보관함
«   2024/03   »
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
Total
Today
Yesterday