为什么在C#中将字符串转换为DateTime失败?

时间:2014-04-02 19:01:46

标签: c# asp.net datetime

我有一个这样的字符串,我想将其转换为DateTime格式(MM / dd / yyyyTHH:mm:ss)。 但它失败了,请让我知道我哪里错了。

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");

string stime = "4/17/2014T12:00:00";
DateTime dt = DateTime.ParseExact(stime, "MM/dd/yyyyTHH:mm:ss", CultureInfo.InvariantCulture);

这是代码,我是如何设置此字符串的:

string startHH = DropDownList1.SelectedItem.Text;
string startMM = DropDownList2.SelectedItem.Text;
string startSS = DropDownList3.SelectedItem.Text;
string starttime = startHH + ":" + startMM + ":" + startSS;
string stime = StartDateTextBox.Text + "T" + starttime;

获得此异常

String was not recognized as a valid DateTime.

3 个答案:

答案 0 :(得分:2)

您在格式字符串中写了MM,这意味着您需要两个月的月份。如果您想要一个月的数字,请使用M

DateTime dt = DateTime.ParseExact(stime, "M/dd/yyyyTHH:mm:ss", CultureInfo.InvariantCulture);

另一种解决方案是更改字符串以匹配您的格式。

string stime = "04/17/2014T12:00:00";
DateTime dt = DateTime.ParseExact(stime, "MM/dd/yyyyTHH:mm:ss", CultureInfo.InvariantCulture);

关键是要记住你正在做parse exact.因此,你必须将你的字符串与你的格式完全匹配。

答案 1 :(得分:1)

您的日期字符串4/17/2014T12:00:00中的

问题:您只有一位Month值(4),但在您的DateFormat字符串中,您提到了双MM

解决方案:您应指定单M而不是双MM

试试这个:

DateTime dt = DateTime.ParseExact(stime, "M/dd/yyyyTHH:mm:ss", 
                              CultureInfo.InvariantCulture);

答案 2 :(得分:0)

注意您的日期字符串每月仅包含1位数字,但您的模式定义MM 因此,要么使用月04,要么将模式更改为M