0

文字列を日付に変換できません。17/12/2012 のような文字列 このために書かれたコードを以下に示します

public string Date_Convert(string dt1)
{
    string strdate = string.Empty;
    Thread.CurrentThread.CurrentCulture = new CultureInfo("en-GB");
    DateTime dt = Convert.ToDateTime(dt1);
    strdate = dt.Month.ToString() + "/" + dt.Day.ToString() + "/" + dt.Year.ToString();
    Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
    return strdate;
}

私のローカルシステムでは問題なく動作しています。私のサーバー(オーストラリアにある)では動作していませんもちろん、上記のコードでさまざまなカルチャ設定を試しましたが、

where条件のSQLクエリでこの日付文字列を使用しています。

私を助けてください、それは私の一日の時間を殺しました、そして前もって感謝します。

4

3 に答える 3

2

文化を切り替える代わりに、次のようなことをしてみませんか。

public string Date_Convert(string dt1)
{
    DateTime dt = DateTime.ParseExact(dt1, "dd/MM/yyyy", new CultureInfo("en-GB"));
    return dt.ToString("d", new CultureInfo("en-US"));
}

また、SQL クエリで値を使用する場合 (クエリがDATETIMEではなくフィールドで機能する場合)、 SQL インジェクションを回避するためにNVARCHAR、パラメーター化されたクエリを使用して値をデータベースに渡すことも検討する必要があります。DateTime

例えば:

DateTime value = DateTime.Parse(dt1, new CultureInfo("en-GB"));
using (SqlCommand cmd = new SqlCommand("SELECT ... FROM ... WHERE Date = @date", connection))
{
    cmd.Parameters.AddWithValue("@date", value);
    ...
}
于 2012-12-17T12:11:27.567 に答える
1

パラメータとしてパターンを受け取るDateTime.ParseExact()を試してください。この場合、「dd/MM/yyyy」になります。

于 2012-12-17T12:07:02.573 に答える
0

DataTime の形式は、アプリケーションの現在のカルチャによって異なります。アプリケーション全体で特定の形式を使用するには、セクションの下の web.config ファイルにタグを設定できます。このような場合、datatime を適切な形式に変換するコードを記述する必要はありません。デフォルトでは、すべての日付が指定された形式に設定されます。

http://forums.asp.net/t/1109183.aspx/1

より詳しい情報

于 2012-12-17T12:11:32.123 に答える