1

SQL の日付を DateTime として保存しています。テキスト ボックスに表示するときは、次のようにします。

txtDateLogged.Text = v.DateLogged.ToString("dd-MM-yyyy");

しかし、そのテキストボックスを更新して SQL Im に書き戻すと、これを使用すると無効な DateTime エラーが発生します。

if (DateLogged!= "")
{ 
     uInput.DateLogged = Convert.ToDateTime(DateLogged);
}

フォーマットに何かが欠けていると仮定します-日付値は、更新を行うパブリックボイドに文字列として渡され、上記の行で変換されます。助言がありますか?

ありがとう

T

4

4 に答える 4

8

テキストに変換たのと同じ形式に戻す必要があります。

uInput = DateTime.ParseExact(text, "dd-MM-yyyy", CultureInfo.InvariantCulture);

詳細については、ドキュメントを参照しDateTime.ParseExactてください。

もちろん、文字列表現への変換を避けるDateTimeことができれば、またはそのままにしておくことができれば、それはより良いでしょう。

ユーザー入力を解析している場合はDateTime.TryParseExact、フロー制御の例外を使用せずに無効なデータの可能性を考慮して、代わりに使用する必要があります。

于 2012-06-27T11:04:55.477 に答える
0

105形式で提出されたSQL変換日付

例えば

Convert(varchar(20),getdate(), 105 )を選択

于 2012-06-27T12:06:48.063 に答える
0

多分使用:

 uInput.DateLogged = (new DateTime(year, month, day))

そして、DateLogged から年/月/日の部分を抽出します。

編集:

文字列の日付が「dd-MM-yyyy」であることがわかっているので、次のように部分を抽出します。

int year = Convert.ToInt16(DateLogged.Substring(6, 4));
int month = Convert.ToInt16(DateLogged.Substring(3, 2));
int day = Convert.ToInt16(DateLogged.Substring(0, 2));

MM が「JA」を意味する場合は、「JA」を「01」または 1 に変換する必要があります。

于 2012-06-27T11:04:53.817 に答える
0

DateTime.TryParseを使用して文字列値を使用および解析することもできますCultureInfo
ユーザーは、カルチャ固有のフォーマットを使用してデータを入力でき、次のように変換できますInvariantCulture

 DateTime b;
 bool isCorrectValue = false;
 CultureInfo uiCulture = Thread.CurrentThread.CurrentUICulture;
 if (DateTime.TryParse(DateLogged, uiCulture, DateTimeStyles.None, out b))
     isCorrectValue = true;
于 2012-06-27T11:15:44.430 に答える