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

本文关键字:DateTime 转换 对象 字符串 异常 | 更新日期: 2023-09-27 18:27:02

我正在处理一个日志文件,它给了我一个看起来像这样的日期字符串:

09/Feb/2012:00:38:48

我一直在网上看不同的关于转换日期的页面,比如MSDN网站,但没有一个显示的日期像这个。

我需要手动重新格式化字符串以使其看起来类似于:吗

2012-02-09T00:38:48.0000000

或者有没有一种方法可以让它真正转化?

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

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

正如AdaTheDev所说,DateTime.TryParseExact是前进的方向。根据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的使用——例如,看起来不应该使用当前的区域性。

(当然,您可以使用Noda Time;)