1

考えられるすべての解決策をオンラインで試しましたが、「文字列は有効な日付時刻として認識されませんでした」というエラーがまだ表示される理由がわかりません。面白いのは、2 つの日付時刻を変換していることです。もう1つはセル7ですが、セル3は正常に動作しますが、セル7は変換したくなく、両方とも同じデータ型です!!. SQL Server テーブルからこれらのデータを取得しています。データ型は varchar ですが、形式は mm/dd/yyyy にする必要があります。
この方法を試しましたが、うまくいきませんでした:

foreach (GridViewRow gr in GridView1.Rows)
        {

            CheckBox cb = (CheckBox)gr.FindControl("chkItem");
            if (cb.Checked)
            {

                DateTime ExpectedSubDate = DateTime.Parse(gr.Cells[3].Text);
                DateTime strTargetDate = DateTime.ParseExact(gr.Cells[7].Text, "MM/DD/YYYY HH:MM:SS TT", System.Globalization.CultureInfo.InvariantCulture);  

私もこの方法を試しましたが、どちらもうまくいきませんでした

DateTime strTargetDate = DateTime.Parse(gr.Cells[7].Text);

私もこの方法を試しましたが、うまくいきませんでした:

DateTime strTargetDate = DateTime.ParseExact(gr.Cells[7].Text, "MM/DD/YYYY", System.Globalization.CultureInfo.InvariantCulture);
4

4 に答える 4

4

書式文字列は大文字と小文字を区別します。そうしないと、月または分として解析する場所を認識できません。

日付と時刻の例"11/15/2012 02:26:35 PM":

DateTime strTargetDate = DateTime.ParseExact(gr.Cells[7].Text, "MM/dd/yyyy hh:mm:ss tt", System.Globalization.CultureInfo.InvariantCulture);

たとえば、日付のみの場合"11/15/2012":

DateTime strTargetDate = DateTime.ParseExact(gr.Cells[7].Text, "MM/dd/yyyy", System.Globalization.CultureInfo.InvariantCulture);

参照:カスタムの日付と時刻の書式文字列

于 2012-11-15T21:07:05.880 に答える
1

フォーマット文字列が正しくありません。フォーマット文字列では大文字と小文字が区別されます。

mm=分
dd=日
MM=月
yyyy=年

これである必要があります:

CultureInfo usa = CultureInfo.GetCultureInfo("en-US");
DateTime strTargetDate = DateTime.ParseExact(gr.Cells[7].Text, "MM/dd/yyyy", usa );

InvariantCultureを引き続き使用できますが、mm / dd/yyyyの日付形式は実際には米国に固有のものです。

于 2012-11-15T21:08:26.470 に答える
0

GridViewに非表示の列はありますか?その場合、列のインデックスがオフになっていて、間違ったデータを取得している可能性があります。コードの解析に失敗した日にブレークポイントを設定しgr.Cells[7].Text、イミディエイトウィンドウでの値をチェックして、正しいテキストを取得していることを確認してください。

于 2012-11-15T21:39:25.410 に答える
0

ここで例を見てください

http://msdn.microsoft.com/en-us/library/ey1cdcx8.aspx

http://msdn.microsoft.com/en-us/library/kc8s65zs.aspx

単純な文字列の解析が問題を引き起こしています。

于 2012-11-15T21:11:27.813 に答える