misc.log

日常茶飯事とお仕事と

文字列→日付型への変換

文字列として表記された日付情報を、データベース上の日付フィールドと照合する必要があるため、方法を模索。すると、意外や意外...

[イミディエイトウィンドウでの実験]
?cdate("2005/01/02")
#1/2/2005#
?cdate("2005/02/02")
#2/2/2005#
?cdate("20050202")
実行時例外がスローされました : System.InvalidCastException - 文字列 "20050202" から型 'Date' へのキャストが有効ではありません。
?cdate("2005/02/02")
#2/2/2005#
?cdate("2005/02/01")
#2/1/2005#
?cdate("平成12年1月2日")
#1/2/2000#
?cdate("明治12年1月2日")
#1/2/1879#
?cdate("明治12年1月②日")
実行時例外がスローされました : System.InvalidCastException - 文字列 "明治12年1月②日" から型 'Date' へのキャストが有効ではありません。
?cdate("明治12年1月2日")
#1/2/1879#
?cdate("M12年1月2日")
#1/2/1879#
?cdate("S12年1月2日")
#1/2/1937#
?cdate("s12年1月2日")
#1/2/1937#
?cdate("s12/1/02")
#1/2/1937#

なんと、全角半角交じりをはじめ、和暦での表示、和暦+スラッシュや和暦略称(H/S/T/M)にも対応している。ただ、「20050201」といった、システム屋が使いがちな連記形はだめなので、これはスラッシュを入れるなどして対応してやる必要がある。
おそらく、日本国内限定であれば、あまり深く考えることなく処理できそうだ。ただ、海外のことを考えると、月、日の順がばらばらなのでちょっとやっかい。