|
Olacle ではなく Oracle です。
■No41343 (jin さん) に返信
> Dim lsDateValue As Stirng = TextBox1.Text
Stirng → String
> If IsDate(lsDateValue ) = False Then
IsDate 関数は、その認識範囲が広すぎるので注意が必要です。
たとえば、これらは True を返します。
IsDate("11PM")
IsDate("1:2:3.4567890")
IsDate("1.2.3456")
IsDate("9876 - 1.23")
IsDate("M 01 23")
IsDate("H 01 23 4567")
IsDate("平成3000年")
IsDate("午後23時59分2秒")
> 入力された日付が、
> 2009/09/30 この値は上記の判断でTrueとなり、
> 20090930 この値ですとFalseとなります。
Date.TryParseExact メソッドを使いましょう。
解析のための書式を複数指定できますよ。
Imports System.Globalization
Module Module1
Private DatePattern() As String = { "yyyyMMdd", "yyyy\/MM\/dd"}
Public Function ToDate(ByVal s As String) As Date?
Dim d As Date
Return If(Date.TryParseExact(s, DatePattern, _
CultureInfo.InvariantCulture, _
DateTimeStyles.None, d), d, DirectCast(Nothing, Date?))
End Function
Sub Main()
Dim st() As String = {"20090930", "20099999", "2009/09/30", "2009/99/99"}
For Each s In st
Dim dt? = ToDate(s)
If dt.HasValue Then
MsgBox(String.Format("変換成功({0})=>{1}", s, dt.Value), MsgBoxStyle.Information)
Else
MsgBox(String.Format("変換失敗({0})", s), MsgBoxStyle.Exclamation)
End If
Next
End Sub
End Module
|