如何将字符串解析为日期时间格式

时间:2013-10-08 16:34:04

标签: c#

我想将日期时间字符串解析为DateTime数据类型。

字符串的格式类似于08/10/2013 09:49 PM,我希望它转到2013-10-08 21:49:05.6500000

形式

以下是我的代码,但它无效。

public static DateTime ConvertDateTime(String arg_dateTime)
{
    try
    {
        return DateTime.ParseExact(arg_dateTime, 
            "dd/MM/yyyy H:m:s fff", 
            System.Globalization.CultureInfo.InvariantCulture);
    }
    catch(Exception exp)
    {
        return DateTime.Now;
    }
}

2 个答案:

答案 0 :(得分:2)

您的格式字符串与您的输入数据不匹配。请尝试使用"dd/MM/yyyy HH:mm:ss tt"格式字符串,有关详细信息,请参阅custom date and time format documentation

请注意,如果异常失败,则应使用DateTime.TryParseExact并检查返回值,而不是捕获异常。或者,如果此处的失败表示严重失败,请使用ParseExact并且不捕获异常。您确实想要默认为DateTime.Now吗?对我来说似乎不太可能。你应该强烈考虑让异常传播。

此外,您的方法不会返回特定格式 - 它会返回DateTime。这对格式一无所知 - 如果你想将值转换为特定的格式,你应该专门这样做。

答案 1 :(得分:0)

您是否只需要使用ParseExact

为什么不Parse

string arg_dateTime = "2013-10-08 21:49:05.6500000";
var dt =  DateTime.Parse(arg_dateTime, System.Globalization.CultureInfo.InvariantCulture);
Console.WriteLine(dt);//this works

以下是Demo