特定の日付と時刻の形式のAccess Dateオブジェクトに日付/時刻文字列を解析するにはどうすればよいですか?データと時刻の文字列を解析して日付にアクセスする値
私はこのようなCDate関数()関数を使用することができます。この作品
Dim StrDateTime As String
Dim DtTest As Date
StrDateTime = "2011-12-31 23:59:59"
DtTest = CDate(StrDateTime)
MsgBox DtTest
を、アクセスが細かい、フォーマットを認識しますが、どのように私は絶対にこれは、すべての状況下で起こることを確認することができます(たとえば、日付/時刻設定地域の設定、アクセスバージョン?)。私はCDateに私の特別な日付/時刻形式を "伝えたい"と思います。
Dim StrDateTime As String
Dim IntYear As Integer
Dim IntMonth As Integer
Dim IntDay As Integer
Dim IntHour As Integer
Dim IntMinute As Integer
Dim IntSecond As Integer
StrDateTime = "2011-12-31 23:59:59"
IntYear = Val(Mid(StrDateTime, 1, 4))
IntMonth = Val(Mid(StrDateTime, 6, 2))
IntDay = Val(Mid(StrDateTime, 9, 2))
IntHour = Val(Mid(StrDateTime, 12, 2))
IntMinute = Val(Mid(StrDateTime, 15, 2))
IntSecond = Val(Mid(StrDateTime, 18, 2))
DtTest = DateSerial(IntYear, IntMonth, IntDay)
DtTest = DtTest + TimeSerial(IntHour, IntMinute, IntSecond)
MsgBox DtTest
CDate関数のその他の利点():
その他のオプションは、この(しかし、多くのコード)であることは、間違った日付/時刻値の型の不一致エラーを与えます。 DateSerial + TimeSerialは新しい日付と時刻を再計算するので、 "2011-12-31 24:59:59"は01/Jan/2012 0:59:59になります。
'CDate関数()'名誉地域設定にかかわらず、Accessのバージョンの。 'CDate()'の1つの欠点は、あいまいなテキスト値が地域の設定と一致しない場合に型の不一致が発生するとは限りません。私の設定は英国です、 'Month(CDate(" 28/04/2011 "))'は正しく4(4月)を返しますが、不合理なイギリスの値 'Month(CDate(" 04/28/2011 "))間違いなくエラーがより有用な場合は、4。 – onedaywhen
"明確なフォーマット"の定義はなんですか?私の設定で私のコンピュータ上で認識されているという事実は、それが必ずしもあらゆる状況において意味するものではありませんか?または私は間違っていますか? 「yyyy-mm-dd hh:mm:ss」(およびその他の既知の形式)はすべてのシステムに共通ですか? – waanders
これはどこかに記載されていますか?そして、 '' CDate( "yyyy-mm-dd hh:mm"、StrValue) 'のような、使用するパースフォーマットを明示的にCDate()に伝える方法はないのでしょうか? – waanders