1

カレンダーエクステンダーを備えたテキストボックスがあります。

フォーマットは次のようになります。

<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 も試しましたが、同じ例外が発生しました。

私がテストしているテキストは2015年5月30日です

私のweb.configの私のフォーマットによれば、これはうまくいくはずです。

update1 次のコードを使用して、ユーザーの選択に基づいてページの言語とカルチャを変更します。おそらくこれが失敗の理由です。

多くの回答が見られます。2 番目の質問は、現在の文化を取得する方法です。

/// <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;
            }
        }
4

5 に答える 5

4

解析するときにフォーマッターを追加する必要があります。DateFormatキーをweb.configに追加しても、それ自体では何も実行されません。

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

いずれの場合も、フォーマットエラーを処理するにはTryParseを使用することをお勧めします。

于 2012-05-15T08:51:07.243 に答える
4

カルチャを明示的に使用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 );
于 2012-05-15T08:53:57.230 に答える
1

解決策は、Web サイトをホストしている場合は IIS のカルチャ プロパティを調整することです。ローカルで作業している場合は、日付を解析するときに次のコードを使用する必要があります。

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

それがうまくいった場合は、このカルチャをマスター ページの既定として設定できます。

もう 1 つの解決策は、日付テキストを分割し、分割された各部分を、たとえばこの日付「2015 年 5 月 30 日」のように、対応する日付部分に配置することです。

        string x = "30/05/2015";
    DateTime dt = new DateTime(int.Parse(x.Split('/')[2]), int.Parse(x.Split('/')[1]), int.Parse(x.Split('/')[0]));
于 2012-05-15T08:57:01.443 に答える
1

使ってみて

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

また

DateTime.Parse(TxtVehicleDestructionDateReturnedVehicle.Text , Appsettings.DateFormat,null);
于 2012-05-15T09:03:50.093 に答える
-1
Date date = new Date(location.getTime());
DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(getApplicationContext());
mTimeText.setText("Time: " + dateFormat.format(date))
于 2012-05-15T08:53:45.047 に答える