VBScript
VisualBasic

【VBS】PowerShellを使用した日時書式変換

はじめに

これは、Visual Basic Advent Calendar 2017の12/14日の記事となります。

VBScriptは日時の書式が、FormatDateTime 関数くらいしかありません。
FormatDateTime 関数 - MSDN

Dim strDate
'strDateに本日日付が yyyy/mm/dd 形式でセットされます。
strDate = FormatDateTime(Now, 1)
'strDateに現在の時刻が hh:mm 形式でセットされます。
strDate = FormatDateTime(Now, 4)

PowerShellを使う

.NET系なら日時書式指定文字列を使用してDataTimeオブジェクトを文字列に変換できます。
書式を指定して日時を文字列に変換する - dobon

.NET系なら、PowerShellが使えるかなと試したのがこちらです。

'出力結果 20171214
MsgBox Format("2017/12/14","yyyyMMdd") 

Function Format(DateTime, Pattern)
    Dim command, wshShell, objExec, wshShellStatus, Stream

    command = "PowerShell -Command Get-Date """ & DateTime & """ -Format """ & Pattern & """"

    Set wshShell = CreateObject("WScript.Shell")
    Set objExec = wshShell.Exec(command)
    objExec.StdIn.Close
    Format = objExec.StdOut.ReadAll

    Set objExec = Nothing
    Set wshShell = Nothing
End Function

PowerShellの画面が表示されるわー、遅いわーで使えるものでは無いです。

PowerShellは標準のカスタム書式では和暦に対応できていないようです。
PowerShell 日付のカスタム書式設定(和暦・西暦)

最後に

素直にFormat書式用の関数を作成するのがいいですね。
【VBS】Format関数の@書式を作ってみた