-2

以下代码引发错误“字符串未被识别为有效日期时间”。

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

如何将该文本字段转换为日期时间?

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

4

7 回答 7

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);

注意:传递nulltoParseExact将使解析器采用当前的文化,这在不同的环境中可能会有所不同。如果您有严格的格式,请通过,CultureInfo.InvariantCulture从而使解析器在所有环境中表现相同

singled将适用于日期中的零填充天数,M以及h

于 2013-04-17T14:51:44.600 回答
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取决于您的日子是否为零填充。

于 2013-04-17T14:51:55.367 回答
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.

于 2013-04-17T14:55:16.550 回答
2

试试这个:

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

DateTime.ParseExact(text, timeFormat, CultureInfo.InvariantCulture);
于 2013-04-17T14:50:20.760 回答
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);
于 2013-04-17T14:47:05.800 回答
1

为什么要这么难?

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

//dt = {2013-05-17 20:08:48}
于 2013-04-17T15:04:43.857 回答
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) { ... }

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

于 2013-04-17T14:58:23.183 回答