使用TextBox进行日期格式转换不正确

时间:2017-12-13 19:50:20

标签: c# asp.net date datetime textbox

我想要MM/dd/yyyy日期格式,但TextBox会提供此日期格式yyyy-MM-dd。 TextMode是Date。

<asp:TextBox ID="txtChkEventDate" TextMode="Date" runat="server"></asp:TextBox>

我已使用此代码转换格式:

string[] formats = { "MM/dd/yyyy" };
var dateTime = DateTime.ParseExact(txtChkEventDate.Text, formats, 
                    new CultureInfo("en-US"), DateTimeStyles.None);

但它显示错误:

  

字符串未被识别为有效的DateTime。

如何将yyyy-MM-dd转换为MM/dd/yyyy日期格式?

2 个答案:

答案 0 :(得分:4)

根据您对问题的评论:

  

值是2017-12-14

该输入与您正在使用的格式字符串不匹配:"MM/dd/yyyy"

您必须使用与源格式匹配的格式字符串:"yyyy-MM-dd"

例如:

var dateTime = DateTime.ParseExact(txtChkEventDate.Text, "yyyy-MM-dd", new CultureInfo("en-US"), DateTimeStyles.None);

从字符串解析值时,您使用的格式字符串与传入数据字符串匹配。如果您希望以后以其他格式输出解析后的值,那么当您使用不同的格式字符串指定该输出时, 。例如:

someLabel.Text = dateTime.ToString("MM/dd/yyyy");

答案 1 :(得分:1)

您的格式变量应该是允许格式的数组。传递给ParseExact的日期格式不在您的格式变量中,因此会引发错误。文件的相关段落:

  

formats参数包含一个模式数组,如果解析操作要成功,则其中一个模式必须完全匹配。格式参数中的模式由“自定义日期和时间格式字符串”表中的一个或多个自定义格式说明符或标准日期和时间格式字符串表中标识预定义模式的单个标准格式说明符组成。

https://msdn.microsoft.com/en-us/library/332de853(v=vs.110).aspx