【问题标题】:string was not recognized as a valid datetime after added datetimepicker添加日期时间选择器后,字符串未被识别为有效日期时间
【发布时间】:2017-03-13 10:51:03
【问题描述】:

我有一个错误“字符串未被识别为有效的日期时间”。在我的项目中添加“datetimepicker”时出现此错误。 我该如何解决这个问题?我尝试了其他解决方案,但没有帮助。

Datetime garanti_baslangici = DateTime.Parse(
    GarantiBaslangici.Text, System.Globalization.CultureInfo.InvariantCulture);

.aspx 代码

<asp:TextBox ID="GarantiBaslangici" CssClass="datepicker" runat="server" />

【问题讨论】:

  • 你说的是哪个控件? ASP.NET MVC 和 WebForms 有不同的控件。尽管它们都将选定的值作为DateTime 值提供。您不需要解析文本。
  • @PanagiotisKanavos 我添加了 .aspx 代码。我不能使用 value 因为这是一个文本框?
  • 我认为这应该可行 - 只要输入的文本代表有效的日期时间。您正在尝试使用不变的文化(基本上意味着 UTC 时间)解析字符串,但您的日期选择器可能会以本地文化返回字符串。因此,如果它返回,例如“10/31/2016”而不是“31/10/2016”,您将收到此错误。
  • 这不是一个日期时间选择器,它只是一个顶部带有一些 javascript 插件的文本框。你用的是哪个插件?插件返回 ISO8601 格式的值,或者您需要找到确切的格式。在这两种情况下,您都需要使用DateTime.ParseExactDateTime.TryParseExact
  • 对于 ISO8601,您可以尝试预定义的 so 格式,YYYY-MM-DDTHH:mm:ssYYYY-MM-DDTHH:mm:ssZ。各种选项描述in this possibly duplicate SO question

标签: c# asp.net datetime webforms


【解决方案1】:

尝试只解析字符串,它应该根据当前系统格式正确解析。

Datetime garanti_baslangici=DateTime.Parse(GarantiBaslangici.Text) 

或更好

Datetime garanti_baslangici;
DateTime.TryParse(GarantiBaslangici.Text,garanti_baslangici);

【讨论】:

  • 这首先是导致问题的原因 - 假设文本遵循某种格式。这在网络浏览器和服务器使用相同的文化时才会发生,这种情况很少发生
  • 它使用用户的区域系统格式,所以应该没有任何问题。如果某些用户将使用其他格式,您可以只显示错误消息并要求编写正确的格式。几乎不可能预测它应该如何以及用户将写什么,因此用户需要根据他的系统格式编写..
  • 哪个用户的?浏览器用户的还是服务器的?为什么你认为文本是特定格式的?
  • 浏览器用户。我不。例如,用户系统日期格式为 dd.mm.yy,如果用户写入 08.25.2016 之类的内容,则会引发错误,我们需要显示错误消息并要求用户以正确的格式写入。
  • 这个答案对我有帮助,谢谢。我猜这个错误原因是“invariant.culture”。
猜你喜欢
  • 2013-02-07
  • 1970-01-01
  • 1970-01-01
  • 2017-12-06
  • 1970-01-01
  • 2012-04-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多