質問

いうまに変換する必要があるテキストデータ。

また、以下のコードん!


        string s = textBox1.Text;
        if (String.IsNullOrEmpty(s))
        {
            textBox2.Text = "Please enter any date.";

        }
        else
        {
            DateTime dt = DateTime.Parse(s);
            string day = dt.Day.ToString();
            string month = dt.Month.ToString();
            string year = dt.Year.ToString();
            s = day + "/" + month + "/" + year;
            textBox2.Text = s;
        }

このことのみを変更しては、以下のフォーマットのデータです。


10/10/09や10/10/2009----変換日------10/10/2009

12/13/2009や12/13/9----変換日-------12/13/2009

10/16----変換日-----------------------16/10/2009

2009/12/10----変換日------------------10/12/2009


以下のフォーマットは少なくなってきている変更を"mm/dd/yyyy


16/10-dd/mm

060209は06022009ddmmyyyy

13122009mmddyyyy

20091213yyyymmdd

20091312yyyyddmm

20.07.2009/20.07.2009/20-07-2009/20-07-09


誰でもできるので教えてくれるので助かります。私は非常に新しいc#

役に立ちましたか?

解決 7

pplが提供してくれたすべてのサポートとガイダンスに感謝します。 クエリの解決策を見つけました

新しいテキストボックスが明示的に作成され、ParseExact関数を使用してDateTime値が変換されます。

以下は使用されたフォームです。代替テキストhttp://img146.imageshack .us / img146 / 2107 / form.jpg

コードは以下に書かれています


    private void button1_Click(object sender, EventArgs e)

      {
        string s = textBox1.Text;           
        string DFF = textBox3.Text;          

        //To check whether field is empty

        if (String.IsNullOrEmpty(s))
        { 
          MessageBox.Show("Please enter correct date");
          textBox2.Text = "Enter correct date";
        }           
        else
        {
            DateTime dt = DateTime.ParseExact(s, DFF, null);
            textBox2.Text = dt.ToShortDateString();
         }

    }

このコードは、すべての日付タイプの出力を提供します:

dd.mm.yyyyまたはdd-mm-yyyyまたはdd \ mm \ yyyy

mm.dd.yyyyまたはmm-dd-yyyyまたはmm \ dd \ yyyy

yyyy.mm.ddまたはyyyy-mm-ddまたはyyyy \ mm \ dd

yyyy.dd.mmまたはyyyy-dd-mmまたはyyyy-mm-dd

ddmmyyまたはmmddyyまたはyyddmm

dd \ mmまたはmm \ ddまたはdd.mmまたはmm.dd

他のヒント

日付の解析はそれよりも少し複雑です、私は恐れています。それはあなたの文化/国の設定に依存します。 DateTime.Parse のオーバーロードを見てください。 。

また、日付を出力するときに、 String.Format のように:

String.Format("{0:dd/MM/yyyy}", dt)

まず、日付文字列を表示する形式を指定する書式文字列で DateTime.ToString メソッドを使用すると、おそらくよりエレガントになります(これに関する情報はこちら)が見つかりました。

指定した他の形式が DateTime オブジェクトに正しく解析されない理由については、おそらく DateTime.Parse(string、IFormatProvider)を使用する必要がありますバリアントを作成し、独自のIFormatProviderを定義します。この MSDNの記事が役立つ場合があります。

まっていく独自の構文解析のためのすべての非標準フォーマットものの形"yyyymmdd""yyyyddmm"の問題がある場合、必要なユーザー指定の入力フォーマットまでの変換が間違っている場合があります。

のみ DateTime.構文解析 (もよBenjol)で解決問題のための共通フォーマットを通じて使われます。

DateTime.Parseは、指定したすべての組み合わせを解析できない可能性があります。最初にDateTime.TryParseを試して、入力日付が解析可能かどうかを確認することをお勧めします。 falseが返された場合は、ParseExact(または、さらに良いのはTryParseExact)を使用して、予想される各日付形式と照合します。

残念ながら、この問題に対する万能のソリューションはないと思います。

DateTime.ParseExactを使用できます

例:

DateTime.ParseExact("20090823", "yyyyMMdd", null);    
DateTime.ParseExact("16/10", "dd/MM", null);

編集: DateTime.TryParse (または DateTime.TryParseExact )で入力した日付を検証します。

DateTime date;
string error = "";
if (!DateTime.TryParse("12978434", out date))
{
    error = "Invalid date";
}

TextBoxの代わりに 'DatePicker' / Calendarコントロールを使用することは可能ですか?

eg AJAX Toolkitカレンダーコントロール

これにより、ユーザーが指定できる可能性のあるすべての日付形式を処理する必要がなくなります。また、より良いユーザーエクスペリエンスを提供しています。

OPコメント後に更新:

他のポスターが示唆しているように、DateTime.TryParseを最初のパスとして使用して、サポートされている標準形式の日付文字列を処理します。次に、サポートされる非標準形式ごとにDateTime.ParseExactにフォールバックする必要があります。最後に、日付以外の文字列またはサポートされていない日付形式のエラーにフラグを立てる必要があると思います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top