출처 : http://dotnetperls.com/datetime-tryparseexact


C# DateTime.TryParseExact Method




DateTime 클래스의 정적 메소드로 TryParseExact 가 있다. 어디에 쓰는건가 하니... 시간, 날짜 정보가 포함된 string 타입의 문자열이 있을 때, 분명히 시간 정보이긴 하나 string 문자열일 뿐이므로 DB에 저장, DateTimePicker 등 과 같은 곳에 사용하기가 무척 까다롭다. 이 문자열을 DateTime.TryParseExact 메소드를 사용하면 DateTime 변수로 변경할 수 있다.


using System;
using System.Globalization;

namespace DateTimeTryParseExact
{
    internal class Program
    {
        public static void Main(string[] args)
        {
            string dateString = "Mon 16 Jun 8:30 AM 2008";
            string format = "ddd dd MMM h:mm tt yyyy";
            DateTime dateTime;

            if (DateTime.TryParseExact(dateString, format, CultureInfo.InvariantCulture,
                                       DateTimeStyles.None, out dateTime))           
                Console.WriteLine(dateTime);            
        }
    }
}




TryParseExact 메소드는 format string(위 예제에서 format 변수 값) 을 사용하여 DateTime 형 변수로 변환시켜 준다.
DateTime.TryParse 메소드도 존재하지만 DateTime.TryParseExact 메소드가 성능이 향상되었고 코드를 더 간단하게 한다.

format string 을 잘 못 지정해 주거나, 시간/날짜 정보를 포함한 문자열이 올바르지 않을 경우 DateTime.TryParseExact 메소드는 false 를 리턴한다.


using System;
using System.Globalization;

namespace DateTimeTryParseExact
{
    internal class Program
    {
        public static void Main(string[] args)
        {
            string dateString = "???";
            string format = "ddd dd MMM h:mm tt yyyy";

            DateTime dateTime;
            if (DateTime.TryParseExact(dateString, format, CultureInfo.InvariantCulture,
                                       DateTimeStyles.None, out dateTime))           
                Console.WriteLine(dateTime);            
        }
    }
}



얼마전 DB로 부터 시간 정보를 string 으로 타입으로 얻어왔는데 이 값을 DateTimePicker 컨트롤에 넣으려다 참 난감해 했던적이 있다. 이게 도움이 될려나... 아하하하하하



Posted by six605
,