[C#/.Net][String To DateTime] 문자형을 Datetime형으로 변경하기
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] (준비중)
'C# > 예제 소스' 카테고리의 다른 글
[C#/.Net][Memory] 메모리 관리 기법 (WeakReference) (1) | 2016.01.09 |
---|---|
[C#/.Net][DateTime] 월별 일수 가져오기(DateTime.DaysInMonth()) (0) | 2016.01.07 |
[C#/.Net] 현재 프로그램 실행 경로 가져오기 (상대 경로 설정) (1) | 2015.11.11 |
[C#/.Net] 디렉토리 존재유무 확인하기 (DirectoryInfo.Exists) (0) | 2015.11.10 |
[C#/.Net] 파일 존재유무 확인하기 (FileInfo.Exists) (0) | 2015.11.10 |