0

日時に変換しようとすると、次のエラーが発生します。

文字列は有効な DateTime として認識されませんでした。

 cost.b_date = DateTime.Parse(c_date.Text) ;//c_date.Text = 12/28/2012

それから私は試します

    string date = string.Format("{0:yyyy-MM-dd}",c_date.Text);
    cost.b_date = DateTime.Parse(date) ;

しかし、この問題を修正する方法と同じ例外が発生します。

4

3 に答える 3

2

入力string.Formatが文字列の場合に使用しても意味がありません。

文字列の形式がわかっている場合は、DateTime.ParseExactまたはを使用する必要がありますDateTime.TryParseExact。たとえば、取得した文字列には、次のように使用できます。

DateTime date = DateTime.ParseExact(text, "MM/dd/yyyy",
                                    CultureInfo.InvariantCulture);

次の点を考慮する必要があります。

  • これはユーザー入力ですか?その場合TryParseExactは、例外なくより簡単にユーザー エラーを検出するために使用します。
  • 正確なフォーマットを確実に知っていますか?そうでない場合は、を使用DateTime.TryParseする方が適切な場合があります。
  • あなたは間違いなく文化を知っていますか?現在のスレッドのカルチャでない場合は、明示的に指定する必要があります。
  • 最初に値をテキストとして取得する必要がありますか? 最初にとして値を与える別の形式の入力を使用できる場合はDateTime、それが望ましいでしょう。
于 2012-12-30T10:29:24.120 に答える
2
CultureInfo provider = CultureInfo.InvariantCulture;
DateTime result = DateTime.ParseExact(c_date.Text, "d", provider);
于 2012-12-30T10:29:57.567 に答える
1

DateTime.ParseExact を使用してみてください。

DateTime date = DateTime.ParseExact(c_date.Text, "yyyy/MM/dd", null);
于 2012-12-30T10:29:56.260 に答える