将异常DateTime字符串转换为DateTime对象

时间:2012-03-06 21:50:24

标签: c# string datetime date-conversion

我正在使用一个日志文件,它给我一个如下所示的日期字符串:

09/Feb/2012:00:38:48

我一直在网上查看有关转换日期的不同页面,例如MSDN site,但没有一个显示的日期与此类似。

我是否需要手动重新格式化字符串,使其类似于:

2012-02-09T00:38:48.0000000

或者有没有办法让它实际转换?

2 个答案:

答案 0 :(得分:6)

您可以使用DateTime.TryParseExact从指定的任何格式将字符串解析为DateTime。这个MSDN ref的底部有很多例子。

答案 1 :(得分:3)

如AdaTheDev所述,DateTime.TryParseExact是前进的方向。根据{{​​3}}上的MSDN页面,您希望MMM为缩写的月份名称。

using System;
using System.Globalization;

class Test
{
    static void Main() 
    {
        string text = "09/Feb/2012:00:38:48";
        DateTime value;
        if (DateTime.TryParseExact(text, "dd/MMM/yyyy:HH:mm:ss",
                                   CultureInfo.InvariantCulture,
                                   DateTimeStyles.None,
                                   out value))
        {
            Console.WriteLine("Success! {0}", value);
        }
        else
        {
            Console.WriteLine("Failed");
        }
    }
}

请注意CultureInfo.InvariantCulture的使用 - 例如,您不应该使用当前的文化。

(当然,您可以使用"custom date and time format strings"代替;)