DateTime.Parse或Convert.ToDateTime不工作(DateTime.Pars

2019-10-16 17:42发布

我有一个日历扩展一个文本框。

格式应该是这样的:

<add key="DateFormat" value="dd/MM/yyyy"/>

我已经在我的aspx标记以下

  <asp:TextBox ID="txt" runat="server" 
                        meta:resourcekey="txt" MaxLength="150" HtmlEncode="False"></asp:TextBox>
                        <ajaxToolkit:CalendarExtender runat="server"
                            TargetControlID="txt"
                                            PopupButtonID="Image1" Format="<%$Appsettings:DateFormat%>" />

当我尝试在这样的属性来使用它:

datett= DateTime.Parse(txt.Text),

它说,出现FormatException。

我调试,并也试过Convert.ToDatetime,同样的异常上升。

我测试的文本是30/05/2015

它根据我在我的web.config格式应该正常工作。

UPDATE1我使用下面的代码根据用户的选择来改变我的网页的语言和文化,也许这就是为什么它的失败,

我看到很多的答案,第二个问题是,如何让目前的文化呢?

/// <summary>
        /// Handles the AcquireRequestState event of the Application control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
        protected void Application_AcquireRequestState(object sender, EventArgs e)
        {
            //Create culture info object 
            /*var ci = new CultureInfo(Session["Language"].ToString());
            System.Threading.Thread.CurrentThread.CurrentUICulture = ci;
            System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(ci.Name);*/

            System.Web.UI.Page p = (System.Web.HttpContext.Current.Handler as System.Web.UI.Page);
            if (p != null)
            {
                p.UICulture = p.Culture = new CultureInfo((string)Session["Language"]).Name;
            }
        }

Answer 1:

你可以使用DateTime.ParseExact和/或明确地传递文化:

var enCulture = new System.Globalization.CultureInfo("en-us");
DateTime result = DateTime.ParseExact("30/05/2015", 
                                      "dd/MM/yyyy", 
                                       enCulture );

编辑 :如果你是动态变化的文化并将其存储在会话,这应该工作:

var userCulture = new System.Globalization.CultureInfo((string)Session["Language"]);
DateTime result = DateTime.Parse(TxtVehicleDestructionDateReturnedVehicle.Text, userCulture );


Answer 2:

您应该添加当你解析格式。 添加日期格式关键看你的web.config不会被它自己做任何事情。

VehicleDesctructionDate = DateTime.Parse(TxtVehicleDestructionDateReturnedVehicle.Text , /* put formatter here */,null);

在所有的情况下,最好用的TryParse处理任何格式错误。



Answer 3:

解决的办法是调整文化财产上的IIS,如果你在它托管自己的网站,或者如果你在本地工作的解析你约会的时候,你应该使用下面的代码:

DateTime.Parse(date,new CultureInfo("en-GB",false));

如果为你工作,你可以设置这个文化作为母版页上的默认。

另一种解决方案是分裂的日期文字和把每splited部分转化成其根据日期部分像这样的实例在此日期“30/05/2015”:

        string x = "30/05/2015";
    DateTime dt = new DateTime(int.Parse(x.Split('/')[2]), int.Parse(x.Split('/')[1]), int.Parse(x.Split('/')[0]));


Answer 4:

尝试使用

Convert.ToDateTime(TxtVehicleDestructionDateReturnedVehicle.Text, CultureInfo.GetCultureInfo("en-GB"));

要么

DateTime.Parse(TxtVehicleDestructionDateReturnedVehicle.Text , Appsettings.DateFormat,null);


Answer 5:

Date date = new Date(location.getTime());
DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(getApplicationContext());
mTimeText.setText("Time: " + dateFormat.format(date))


文章来源: DateTime.Parse or Convert.ToDateTime is not working