バリアントを考えると、VBScript には C# の DateTime.TryParse メソッドに相当するものがありますか?
3 に答える
IsDate(stringDate) を CDate(stringDate) と組み合わせて使用します。
IsDate() 関数を使用して、日付を日付または時刻に変換できるかどうかを判断します。
CDate() は、日付リテラルと時刻リテラル、および許容される日付の範囲内にあるいくつかの数値を認識します。数値を日付に変換すると、整数部分が日付に変換されます。数値の小数部分は、午前 0 時からの時刻に変換されます。
CDate は、システムのロケール設定に従って日付形式を認識します。認識されている日付設定以外の形式で提供された場合、日、月、年の正しい順序が決定されない場合があります。さらに、曜日文字列も含まれている場合、長い日付形式は認識されません。
次の例では、CDate 関数を使用して文字列を日付に変換します。
MyDate = "October 19, 1962" ' Define date.
MyShortDate = CDate(MyDate) ' Convert to Date data type.
MyTime = "4:35:47 PM" ' Define time.
MyShortTime = CDate(MyTime) ' Convert to Date data type.
IsDate("pony") ' Returns false
課題は、多くの状況で前提条件となるローカルの地域設定から独立したソリューションを作成することだと思います。
私が見つけた唯一の方法は、ParseExact() が vbs に存在しないため、DateSerial() を使用することです。
以下のコードでうまくいくと思います。時間コンポーネントを追加するよりスムーズな方法があるはずですが、見つかりませんでした。もちろん、この正確なコードは 1 つの入力形式しかカバーしていませんが、今のところ必要なのはそれだけです。
fixedDate = fixmydate("27-01-2016 18:00:00")
Function fixmydate(mydate)
sday = cint(Mid(mydate,1,2))
smonth = cint(Mid(mydate,4,2))
syear = cint(Mid(mydate,7,4))
shour = cint(Mid(mydate,12,2))
sminute = cint(Mid(mydate,15,2))
ssecond = cint(Mid(mydate,18,2))
sdate = DateSerial(syear,smonth,sday)
sdate = dateadd("h",shour,sdate)
sdate = dateadd("n",sminute,sdate)
sdate = dateadd("s",ssecond,sdate)
fixmydate = sdate
End Function