vbs[002]VBScript用の日付フォーマット関数
VBScript には、VBA にあるような Format関数がないので、簡易的な日付フォーマット関数をつくってみる。
' 日付を fmt 形式の文字列で返す ' "yyyy"は西暦4桁、"yy"は西暦下2桁、"y"は和暦、"0y"は和暦0付き、gは元号(明治以前は西暦) ' "m"、"d"、"h"、"n"、"s" は 年、月、日、時、分、秒(二文字の場合は0つき2桁) ' "aaa"は曜日、"a"はその略字 Function DateFormat(ByVal date_value, ByVal fmt) Dim yyyy, yy, y, g, mm, m, dd, d, hh, h, nn, n, ss, s, aaa, a yyyy = Year(date_value) m = Month(date_value) d = Day(date_value) h = Hour(date_value) n = Minute(date_value) s = Second(date_value) aaa = WeekdayName(Weekday(date_value)) yy = Right(yyyy, 2) mm = Right("0" & m, 2) dd = Right("0" & d, 2) hh = Right("0" & h, 2) nn = Right("0" & n, 2) ss = Right("0" & s, 2) a = Left(aaa, 1) fmt = Replace(fmt, "yyyy", yyyy) fmt = Replace(fmt, "yy", yy) If date_value < #1868/9/4# Then g = "": y = yyyy If date_value >= #1868/9/4# Then g = "明治": y = yyyy - 1867 If date_value >= #1912/7/31# Then g = "大正": y = yyyy - 1911 If date_value >= #1926/12/27# Then g = "昭和": y = yyyy - 1925 If date_value >= #1989/1/8# Then g = "平成": y = yyyy - 1988 If date_value >= #2019/5/1# Then g = "令和": y = yyyy - 2018 fmt = Replace(fmt, "0y", g & Right("0" & y, 2)) If y = 1 Then y = "元" fmt = Replace(fmt, "y", g & y) fmt = Replace(fmt, "mm", mm) fmt = Replace(fmt, "dd", dd) fmt = Replace(fmt, "hh", hh) fmt = Replace(fmt, "nn", nn) fmt = Replace(fmt, "ss", ss) fmt = Replace(fmt, "aaa", aaa) fmt = Replace(fmt, "m", m) fmt = Replace(fmt, "d", d) fmt = Replace(fmt, "h", h) fmt = Replace(fmt, "n", n) fmt = Replace(fmt, "s", s) fmt = Replace(fmt, "a", a) DateFormat = fmt End Function
テスト結果:
Msgbox DateFormat(Now, "yyyy-mm-dd_hhnnss") '⇒ 今日の「年-月-日_時分秒」 Msgbox DateFormat(#1989/1/8 9:45:12#, "y年m月d日(a)hh時nn分ss秒") '⇒ 平成元年1月8日(日)09時45分12秒