DOBON.NET DOBON.NETプログラミング掲示板過去ログ

DateTime.TryParseで日付フォーマットのチェックをおこないたいです

環境/言語:[Windows XP SP3]
分類:[.NET]

こんにちは。下記のURLを参考にコードを書きました。

http://dobon.net/vb/dotnet/vb2cs/isdate.html

テキストボックスに入力された値を見て、それが日付フォーマットになっているかチェックしたいと思います。
テキストボックスに「20131201」という値を入力した時、これは日付フォーマットとして認識してもらいたいのですが、うまくいきません。
どこを変更すればよろしいでしょうか?

private void TextBox_Validating(object sender, CancelEventArgs e)
{
int result;
string input;
DateTime dt;

input = TextBox.Text;

if (!DateTime.TryParse(input, out dt))
{
e.Cancel = true;
TextBox.Select(0, TextBox.Text.Length);
this.errorProvider1.SetError(TextBox, "ERROR");
}
DateTime::TryParseExactメソッドを使って、有効な書式を指定する必要があるかと思います。
// どうせ日付だけならDateTimePickerを使っても良いんでは。
Hongliangさん

TryParseExactで欲しい結果を下記で得ることができました。

DateTime.TryParseExact(input,"yyyyMMdd",
null,
System.Globalization.DateTimeStyles.None,out dt))

ご回答ありがとうございました、助かりました。


■No32024に返信(Hongliangさんの記事)
> DateTime::TryParseExactメソッドを使って、有効な書式を指定する必要があるかと思います。
> // どうせ日付だけならDateTimePickerを使っても良いんでは。
■No32025に返信(高木さんの記事)
> Hongliangさん
>
> TryParseExactで欲しい結果を下記で得ることができました。
>
> DateTime.TryParseExact(input,"yyyyMMdd",
> null,
> System.Globalization.DateTimeStyles.None,out dt))
>
> ご回答ありがとうございました、助かりました。
>
>
> ■No32024に返信(Hongliangさんの記事)
>>DateTime::TryParseExactメソッドを使って、有効な書式を指定する必要があるかと思います。
>>// どうせ日付だけならDateTimePickerを使っても良いんでは。
解決済み!
2013/12/26(Thu) 11:50:44 編集(投稿者)

>DateTime.TryParseExact(input,"yyyyMMdd",
> null,
> System.Globalization.DateTimeStyles.None,out dt))

第3引数providerにnullを与えた場合「現在のカルチャ」が使用されますが、OSの設定でカレンダーの種類を和暦に設定していた場合にそれが適用されてy指定子が和暦として解釈されたような記憶があります。
西暦固定ならCultureInfo.InvariantCultureを指定しておくべきです。

// 解決済み消しちゃったので修正で解決済みチェックを付け直し。
解決済み!
Hongliangさん

ご回答ありがとうございます。カルチャーの事は考えていませんでした。西暦のみで和暦は使用しないので、CultureInfo.InvariantCultureに変更したいと思います。

■No32027に返信(Hongliangさんの記事)
> 2013/12/26(Thu) 11:50:44 編集(投稿者)
>
> >DateTime.TryParseExact(input,"yyyyMMdd",
>> null,
>> System.Globalization.DateTimeStyles.None,out dt))
>
> 第3引数providerにnullを与えた場合「現在のカルチャ」が使用されますが、OSの設定でカレンダーの種類を和暦に設定していた場合にそれが適用されてy指定子が和暦として解釈されたような記憶があります。
> 西暦固定ならCultureInfo.InvariantCultureを指定しておくべきです。
>
> // 解決済み消しちゃったので修正で解決済みチェックを付け直し。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板