字符串未被识别为有效日期时间

时间:2013-04-17 14:46:00

标签: c#

以下代码抛出错误'字符串未被识别为有效日期时间'。

string text = "5/17/2013 8:08:48 PM";
string timeFormat = "dd-MM-yyyy HH:mm:ss";
DateTime.ParseExact(text, timeFormat, null);

如何将该文本字段转换为DateTime?

我将日期时间字符串分配给变量只是为了澄清。在我的场景中,日期字符串来自datetimepicker控件。

7 个答案:

答案 0 :(得分:4)

string text = "5/17/2013 8:08:48 PM";

string timeFormat = "M/d/yyyy h:mm:ss tt";

DateTime.ParseExact(text, timeFormat, CultureInfo.InvariantCulture);

注意:将null传递给ParseExact会使解析器获取当前的文化,这可能在不同的环境中有所不同。如果您有严格的格式,请传递CultureInfo.InvariantCulture,从而使解析器在所有环境中的行为相同

单{{}}}适用于日期为零填充的日期,以及dM

答案 1 :(得分:3)

我认为您需要以下格式字符串:"M/dd/yyyy h:mm:ss tt"

string text = "5/17/2013 8:08:48 PM";
string timeFormat = "M/dd/yyyy h:mm:ss tt";
DateTime.ParseExact(text, timeFormat, CultureInfo.InvariantCulture);

为我跑。请注意,dd可能是d,具体取决于您的日期是否为零填充。

答案 2 :(得分:3)

来自 MSDN ;

  

字符串表示形式的格式必须与指定的格式匹配   格式正确。

试试这个;

string text = "5/17/2013 8:08:48 PM";
string timeFormat = "M/d/yyyy h:mm:ss tt";
DateTime date = DateTime.ParseExact(text, timeFormat, CultureInfo.InvariantCulture);
Console.WriteLine(date);

这是DEMO

答案 3 :(得分:2)

试试这个:

string timeFormat = "M/d/yyyy h:mm:ss tt";

DateTime.ParseExact(text, timeFormat, CultureInfo.InvariantCulture);

答案 4 :(得分:1)

string text = "5/17/2013 8:08:48 PM";
string timeFormat = "M/dd/yyyy h:mm:ss tt";
DateTime date = DateTime.ParseExact(text, timeFormat, CultureInfo.InvariantCulture);

答案 5 :(得分:1)

为什么要这么难?

string text = "5/17/2013 8:08:48 PM";
DateTime dt = DateTime.Parse(text);

//dt = {2013-05-17 20:08:48}

答案 6 :(得分:0)

问题是您缺少“PM”(tt)的格式;它应该是:

try{
string text = "5/17/2013 8:08:48 PM";

string timeFormat = "M/dd/yyyy HH:mm:ss tt";

DateTime.ParseExact(text,timeFormat,null); 

}   catch (FormatException) { ... }

请注意,使用此方法时应始终处理此异常。