날짜와 시간의 형식에 맞춘 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번 메소드는 후에 다시 블로깅하겠습니다.

« PREV : 1 : 2 : 3 : 4 : 5 : 6 : ··· : 80 : NEXT »