LoginSignup
0
0

More than 3 years have passed since last update.

VBS 西暦を和暦に変換する関数 令和レジストリ設定済み版

Posted at

ただし機種によってはあらたにインストールが必要になります。
https://blogs.technet.microsoft.com/jperablog/2018/06/25/netframework/
https://support.microsoft.com/ja-jp/help/4477957/new-japanese-era-updates-for-net-framework
.Net FrameWork 3.5のアップデートが必要になる。これは自動ではインストールされない。
しかし、これがVBSで使えるとは思っていなかったのでサボっていたのが原因らしい。

Function fnAcToJCalender(Dt)
Dim jc
Dim lngJapaneseEraNumber, r, strGengou
Dim lngstrJapaneseEraYear '元年は01年ではなく元年にする場合、文字列型でも長整数型でもない
If IsDate(Dt) = False Then
Err.Raise vbObjectError + 513 ," fnAcToJCalender値を見直してください","日付時刻データ型と判断できません"
Exit Function
End if
Set jc = CreateObject("System.Globalization.JapaneseCalendar")
lngJapaneseEraNumber = jc.GetEra(Dt)
Select Case lngJapaneseEraNumber
Case 1: strGengou = "明治"
Case 2: strGengou = "大正"
Case 3: strGengou = "昭和"
Case 4: strGengou = "平成"
Case Else: strGengou = "令和"
End Select
lngstrJapaneseEraYear = jc.GetYear(Dt)
If lngstrJapaneseEraYear = 1 Then lngstrJapaneseEraYear = "元"
fnAcToJCalender = strGengou & lngstrJapaneseEraYear & "年" & jc.GetMonth(Dt) & "月" _
& jc.GetDayOfMonth(Dt) & "日"
End Function

System.Globalization.JapaneseCalenderがVBSでも使えるとは・・・
またレジストリに令和が設定されていると、Case Elseが令和になります。
以前はCase3昭和、Case Else 平成でした。

あとでリンク先を紹介しますが、これが2011年の記事だったので、もしや・・・と思い試したところ、令和になっていると令和が返ってきます。
VBSでも和暦で、令和が取得できるのです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0