Mir의 운영환경
본체 Intel Stick PC (STK2M3W64CC)
O S Windows10 Home
Application Micorsoft Visual Studio 2010 (10.0.30319.1)
.Net

Framework Ver 4.0

문자형을 DateTime형으로 변경하기


날짜와 시간의 형식에 맞춘 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. 년,월,일 구분값은 [스페이스값],[/],[-] 으로만 구분가능하다. (섞여도 상관없습니다.)

            
        public void ToDateTimeTest1()
        {
            DateTime dti01 = Convert.ToDateTime("2015 11 13");      //변환 가능 (2015년 11월 13일 오후 12:00:00)
            DateTime dti02 = Convert.ToDateTime("2015-11-13");      //변환 가능 (2015년 11월 13일 오후 12:00:00)
            DateTime dti03 = Convert.ToDateTime("2015/11/13");      //변환 가능 (2015년 11월 13일 오후 12:00:00)
            DateTime dti04 = Convert.ToDateTime("2015-11/13");      //변환 가능 (2015년 11월 13일 오후 12:00:00)
            DateTime dti05 = Convert.ToDateTime("2015/11 13");      //변환 가능 (2015년 11월 13일 오후 12:00:00)
            DateTime dti06 = Convert.ToDateTime("20151113");        //에러 (구분값 없음)
            DateTime dti07 = Convert.ToDateTime("2015_11_13");      //에러 (구분값 에러)
            DateTime dti08 = Convert.ToDateTime("2015:11:13");      //에러 (구분값 에러 :는 시간에서 사용가능)
        }

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

            
        public void ToDateTimeTest2()
        {
            DateTime dti09 = Convert.ToDateTime("11 13");       //변환 가능 (2015년 11월 13일 오후 12:00:00)
            DateTime dti10 = Convert.ToDateTime("15 11 13");    //변환 가능 (2015년 11월 13일 오후 12:00:00)
            DateTime dti11 = Convert.ToDateTime("30");          //에러
            DateTime dti12 = Convert.ToDateTime("30 15");       //에러 (30월이 없으므로 에러)
        }

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

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




2. 시간 입력시


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

            
        public void ToDateTimeTest4()
        {
            DateTime dti20 = Convert.ToDateTime("10:15:22");        //변환 가능 (2015년 11월 13일 오전 10:15:22)
            DateTime dti21 = Convert.ToDateTime("101522");          //에러 (구분자 에러)
            DateTime dti22 = Convert.ToDateTime("10-15-22");        //에러 (2010년 15월 22일로 인식)
            DateTime dti23 = Convert.ToDateTime("10/15/22");        //에러 (2010년 15월 22일로 인식)
            DateTime dti24 = Convert.ToDateTime("10_15_22");        //에러 (구분자 에러)
        }

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

            
        public void ToDateTimeTest5()
        {
            DateTime dti25 = Convert.ToDateTime("10:15");       //변환 가능 (2015년 11월 13일 오전 10:15:00)
            DateTime dti26 = Convert.ToDateTime("30");          //에러
            DateTime dti27 = Convert.ToDateTime("30:15");       //에러 (30시가 없으므로 에러)
        }

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

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

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

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

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

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


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





※ 관련글

[String To DateTime] DateTime.TryParse() 사용하여 문자형을 DateTime형으로 변환 확인하기 (준비중)

[String To DateTime] DateTime Format (날짜형식)을 사용하여 문자형을 DateTime으로 변환하기 (준비중)

[DateTime To String] (준비중)


+ Recent posts