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

文字列を日付型かどうか判定する

環境/言語:[VB.NET VisualStudio.NET2003]
分類:[.NET]

こんにちは。

また、わからない事がありましたので、お教え願います。

文字列"200402"を、Date型の"yyyyMM"かどうか判別したいのですが、
全く手法がわからないです。

今のところ、

Try
'文字列をDate型に変換
Dim datenum As Date = Format("200402", "yyyyMM")
Catch
エラー処理
end try

上記の方法で、Date型に変換できなければエラーを返すという方法を
考えて試しているのですが、すべてエラーとなって返ってきます。

何か、if文を用い、Date型かどうかの判別をする事は可能なのでしょうか?

申し訳ございませんが、どなたかわかる方いらっしゃれば
お教え願います。
DateTime.Parse
DateTime.ParseExact

あたり
こんにちは、じゃんぬ です。

■No12164に返信(中博俊さんの記事)
> DateTime.Parse
> DateTime.ParseExact
>
> あたり

または自作の IsDate メソッドでも良いでしょう。
書式は自らが設計しなければなりませんが。
2005/08/11(Thu) 11:23:22 編集(投稿者)
2005/08/11(Thu) 11:23:12 編集(投稿者)

どうもです。

String型をDate型(DateTime)に突っ込んで
暗黙の型変換をし(Option Strict Offになってますよね?)
不正であれば,キャストエラーを投げさせて
Catchする方法を取られているのと思いますが,

暗黙の型変換を許すような文字入力形式でない限りは
上で大先生が仰られているように,
独自でロジックを組むしかないと思います。

例:
文字の長さなどをチェック
yyyy/MM/01 のような文字列にString.Substringなどを使って編集
Information.IsDateをつかったりとか。
こんにちは。
コメントありがとうございます!

If DateTime.ParseExact_(datestr, "yyyyMM",_System.Globalization.DateTimeFormatInfo.InvariantInfo, _System.Globalization.DateTimeStyles.None) = Nothing Then
return
End If

上記のやり方で一様できましたがどうでしょうか?
解決済み!
また、じゃんぬさんやなおこさんが教えてくれた方法でも
試してみようと思います。

本当にいつもお世話になっております。
ありがとうございました!!
解決済み!
> 文字列"200402"を、Date型の"yyyyMM"かどうか判別したいのですが、
> 全く手法がわからないです。
>

yyyy 数字4桁なんでも
mm 00-12まで
これだけでいいなら正規表現でもできそうですね

if regex.ismatch( string1 , "^[0-9]{4}(0[1-9]|1[1-2])$").ismatch then
messagebox.show ("OK")
end

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