C#에서 Convert.ToDateTime() 메서드는 지정된 문화권(culture)별 서식 정보를 사용하여 날짜와 시간을 나타내는 문자열을 이에 상응하는 DateTime> 값으로 변환합니다. 특히 여러 국가의 날짜 형식이 서로 다르기 때문에(예: MM/DD/YYYY vs DD/MM/YYYY), IFormatProvider를 활용하면 변환 오류를 방지하고 정확한 결과를 얻을 수 있습니다.
구문
이 메서드의 기본 구문은 다음과 같습니다.
public static DateTime ToDateTime (string val, IFormatProvider provider);
매개변수 설명:
- val: 변환할 날짜와 시간이 포함된 문자열입니다.
- provider: 문화권별 서식 정보를 제공하는 객체로, 주로
CultureInfo인스턴스가 사용됩니다.
예제
아래 예제는 Convert.ToDateTime() 메서드를 사용하여 미국 영어(en-US) 문화권 형식으로 날짜 문자열을 변환하는 방법을 보여줍니다.
using System;
using System.Globalization;
public class Demo {
public static void Main(){
CultureInfo cultures = new CultureInfo("en-US");
String val = "11/11/2019";
Console.WriteLine("Converted DateTime value...");
DateTime res = Convert.ToDateTime(val, cultures);
Console.Write("{0}", res);
}
}실행 결과
위 코드를 실행하면 다음과 같은 출력 결과를 확인할 수 있습니다.
Converted DateTime value... 11/11/2019 12:00:00 AM
참고 사항
변환된 시간이 자정(12:00:00 AM)으로 표시되는 이유는 입력 문자열에 시간 정보가 포함되어 있지 않기 때문입니다. 만약 문화권 정보 없이 호출할 경우(Convert.ToDateTime(val))에는 시스템의 현재 문화권 설정에 따라 해석되므로, "11/11/2019"가 월/일 순서인지 일/월 순서인지에 따라 다른 결과가 나오거나 FormatException이 발생할 수 있습니다. 따라서 명시적으로 IFormatProvider를 지정하는 것이 안전한 코딩 습관입니다.