C# 错误:字符串未被识别为有效的日期时间。我正在将jquery数据选择器与asp.net、c web表单和sql数据库一起使用
我有一个文本框,在其中我从日期选择器中选择日期。然后,我需要验证: 1.选择一个日期 2.所选日期不是将来的日期。仅限今天或之前的任何日期。 3.常规工时加上该日期的工时不得超过20-24小时 我有一个错误:字符串未被识别为有效的日期时间。我已经花了好几天时间了,能不能请你帮我一下 C代码:C# 错误:字符串未被识别为有效的日期时间。我正在将jquery数据选择器与asp.net、c web表单和sql数据库一起使用,c#,sql,asp.net,runtime-error,datetimepicker,C#,Sql,Asp.net,Runtime Error,Datetimepicker,我有一个文本框,在其中我从日期选择器中选择日期。然后,我需要验证: 1.选择一个日期 2.所选日期不是将来的日期。仅限今天或之前的任何日期。 3.常规工时加上该日期的工时不得超过20-24小时 我有一个错误:字符串未被识别为有效的日期时间。我已经花了好几天时间了,能不能请你帮我一下 C代码: protected void btnCreate_click(object sender, EventArgs e) { try { Date
protected void btnCreate_click(object sender, EventArgs e)
{
try
{
DateTime dt = DateTime.ParseExact(DateTxt.Text, "MM/dd/yyyy", CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.AllowWhiteSpaces);
if (DateTxt.Text != "" && PName_dd.Text != "" && CCG_dd.Text != "" && CCL_dd.Text != "")
{
cmd.CommandText = "INSERT INTO TSHistory(EmpId_Int, ProjectCode_Int, TSDate_dt, CCode_Int, TSRhours_nu, TSOhours_nu, JobDescp_vc) VALUES(@GEId, @Pcode, @date, @CCode, @Rhr, @Ohr, @job)";
cmd.Parameters.AddWithValue("@GEId", EmpID.Text);
cmd.Parameters.AddWithValue("@PCode", PCode_txt.Text);
cmd.Parameters.AddWithValue("@date", dt);
cmd.Parameters.AddWithValue("@CCode", CCL_dd.SelectedValue);
cmd.Parameters.AddWithValue("@Rhr", R_txt.Text);
cmd.Parameters.AddWithValue("@Ohr", O_txt.Text);
cmd.Parameters.AddWithValue("@job", JobDesc_txt.Text);
cmd.Parameters.AddWithValue("@Emp", EmpID.Text);
cmd.Connection = Cnn;
Cnn.Open();
cmd.ExecuteNonQuery();
Cnn.Close();
updateUserDetails();
// displayTS();
RefreshSrc();
RefreshDatabase();
}
else
{
// DateTime dt = Convert.ToDateTime();
// var total_hrs = 24;
// DateTime dt = DateTime.ParseExact(DateTxt.Text, "MM/dd/yyyy", CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.AllowWhiteSpaces);
// global.Text = "Done";
if (DateTxt.Text == "")
{
// Response.Write("<script>alert('PLease select date');</script>");
// dateError.Text = "PLease select date";
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertMessage", "alert('Select date')", true);
}
else if (DateTxt.Text != "" && dt > DateTime.Today)
{
// Response.Write("<script>alert('Invalid Date');</script>");
// dateError.Text = "Invalid date";
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertMessage", "alert('Invalid date')", true);
}
}
}
catch (Exception ex)
{
Response.Write("Error: " + ex.Message.ToString());
}
}
Aspx代码:
<div class="form-group col-sm-1">
<asp:TextBox ID="DateTxt" placeholder="Date" CssClass="form-control" runat="server"
ReadOnly="True">
</asp:TextBox>
由于文本仅包含日期部分,请按如下所示更改代码
DateTime dt = DateTime.ParseExact(DateTxt.Text, "MM/dd/yyyy",CultureInfo.InvariantCulture);
我对代码做了一点修改。请查收
DateTime dt = DateTime.ParseExact(DateTxt.Text.Date, "MM/dd/yyyy HH:mm", CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.AllowWhiteSpaces);
使只读=假
如果ReadOnly=True,则无法更改TextBox控件的内容。这就是DateTxt文本值保持为空的原因,它引发了一个错误:字符串未被识别为有效的DateTime。我认为您应该检查DateTxt.text属性字符串,因为该错误表明将文本框内容转换为具有指定格式的DateTime实例时出现问题。我该如何解决该问题@Tetsuyayamamoto取决于DateTxt.Text属性中的值格式,它必须与MM/dd/yyyy HH:MM模式匹配,否则将引发FormatException。您的DateTxt.Text值是多少@Samyazit是从日期选择器中选择的日期。也就是说,如果我在文本框中选择2019年1月30日,当我尝试此控制台时,它会显示01/30/2019@Anoos.WriteLineDateTime.ParseExact01/30/2019,MM/dd/yyyy,CultureInfo.InvariantCulture;最终的结果是2019年1月30日12:00:00!非常感谢:嗨。实际上,当我不输入任何日期时,会再次显示相同的错误,错误:字符串未被识别为有效的日期时间现在当我不输入任何日期或选择了未来日期时,我希望它显示警报。我已经发布了更新的代码。如果你能帮忙,我将不胜感激。此外,当我选择未来日期时,以下错误显示为错误:将数据类型nvarchar转换为数字时出错。请将此代码保持在IF状态。DateTime dt=DateTime.ParseExactDateTxt.Text,MM/dd/yyyy,CultureInfo.InvariantCulture,System.Globalization.DateTimeStyles.AllowHiteSpaces;在我将ReadOnly改为False并用你的代码编辑代码之后,它就工作了。谢谢