【问题标题】:Conversion from string "31/03/2012" to type 'Date' is not valid [duplicate]从字符串“31/03/2012”到类型“日期”的转换无效[重复]
【发布时间】:2011-10-30 14:29:58
【问题描述】:

可能重复:
Conversion from string “31/03/2012” to type 'Date' is not valid

我试过 Data.Parse 和 Convert.todatetime 但现在它说 字符串未被识别为有效的日期时间。我还将 .NetGlobalozation 和 setUI Culture 配置为“English (United States) (en-US)”,默认为“Invariant Language (Invariant Country)”,但没有用。我错过了什么??堆栈跟踪如下..

[FormatException:字符串未被识别为有效的 DateTime。]
System.DateTimeParse.Parse(String s, DateTimeFormatInfo dtfi, DateTimeStyles 样式)+2845862 System.DateTime.Parse(String s) +25 ProwessWebApp.Finyr.SSCreate_Click(Object sender, EventArgs e) in E:\DevVB2008\ProwessWebApp\ProwessWebApp\ProwessWebApp\Finyr.aspx.vb:130 System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111
System.Web.UI.WebControls.Button.RaisePostBackEvent(字符串 事件参数)+110
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(字符串 eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl,字符串 eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +175 System.Web.UI.Page.ProcessRequestMain(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint) +1565

你能告诉我该怎么做吗? 开发..

【问题讨论】:

  • 这不是en-US 日期格式,因为我们的美国人通常使用 MM/dd/yyyy,而不是 dd/MM/yyyy。试试en-GB
  • 编辑原始问题而不是提出新问题。

标签: asp.net


【解决方案1】:

31/03/2012 不是有效的美国英语日期。 English-us 使用“月/日/年”排序,而您输入的日期是“日/月/年”。

03/31/2012 是您输入的正确顺序,或者使用不同的语言环境(法语...)。

【讨论】:

  • zh-CN 做得对。非常感谢它解决了我的问题..
【解决方案2】:

如果您确定日期始终采用该格式,则可以改用 ParseExact:

var date = DateTime.ParseExact(
               "31/03/2012",
               "dd/MM/yyyy",
               System.Globalization.CultureInfo.InvariantCulture);

【讨论】:

    猜你喜欢
    • 2011-12-18
    • 2012-11-09
    • 2015-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-03
    • 1970-01-01
    相关资源
    最近更新 更多