Mac って何?それって美味しいの?

マイコンと呼ばれた時代から現在まで、使用記から何から何でも。

Windows10上で西暦和暦変換をサクッとできるようにする

ちょっと業務で西暦の日付を和暦に変換しなきゃならなくなりました。
まぁ、Excelとか何か使ってやってもいいのでしょうが、
何か、手間をかけずにできないかな?とchatGPTさんにお願いしたところ
PowerShellスクリプトで実現してくれました!
そんな発想無かったよ。ありがとう!

PowerShellを使用して西暦から和暦への変換と年齢計算を行うスクリプト

はじめに

PowerShellを使って、西暦の生年月日を入力し、その日付を和暦に変換して表示し、さらに現在の年齢も計算して表示する便利なスクリプトを作成しました。この記事では、そのスクリプトの使い方や、背後にあるロジックについて説明します。

スクリプトの概要

このスクリプトは、PowerShellを使って西暦の生年月日を入力し、それを和暦に変換して表示します。また、その人の現在の年齢も計算して表示します。

スクリプト

# 西暦から和暦への変換関数
function ConvertToJapaneseEra {
    param(
        [datetime]$Date
    )

    # 元号の開始日と名称の定義
    $EraStartDates = @{
        [datetime]"1868-01-25" = "明治"
        [datetime]"1912-07-30" = "大正"
        [datetime]"1926-12-25" = "昭和"
        [datetime]"1989-01-08" = "平成"
        [datetime]"2019-05-01" = "令和"
    }

    # 元号の開始日を基準にして和暦を計算
    foreach ($StartDate in $EraStartDates.Keys | Sort-Object -Descending) {
        if ($Date -ge $StartDate) {
            $EraName = $EraStartDates[$StartDate]
            $JapaneseYear = $Date.Year - $StartDate.Year + 1
            $JapaneseDate = "$EraName$JapaneseYear 年 $($Date.Month) 月 $($Date.Day) 日"
            return $JapaneseDate
        }
    }

    return "Invalid Date"
}

# 西暦の生年月日を入力
do {
    $InputDate = Read-Host "西暦の生年月日を入力してください (yyyyMMdd形式、例: 19900101)"

    if ([string]::IsNullOrWhiteSpace($InputDate)) {
        Write-Host "スクリプトを終了します。"
        exit
    }

    try {
        $DateTime = [datetime]::ParseExact($InputDate, "yyyyMMdd", $null)
        $JapaneseDate = ConvertToJapaneseEra -Date $DateTime
        $Age = (Get-Date).Year - $DateTime.Year
        if ((Get-Date) -lt $DateTime.AddYears($Age)) {
            $Age--
        }
        Write-Host "和暦の生年月日は: $JapaneseDate"
        Write-Host "現在の年齢は: $Age 歳"
    }
    catch {
        Write-Host "無効な形式です。正しい形式で入力してください (yyyyMMdd形式、例: 19900101)"
    }
} while ($true)

 

PowerShellスクリプトを実行するには、スクリプトを保存し、.ps1の拡張子でファイルを作成し、PowerShellで実行します。

ただし、スクリプトの実行には、PowerShellの実行ポリシーを緩和する必要があるかもしれません。これを行うには、PowerShellを管理者権限で開き、以下のコマンドを実行します。

Set-ExecutionPolicy RemoteSigned

 

使い方

このスクリプトをダブルクリックで実行できるようにすることができます。以下の手順に従ってください。
1. テキストエディターで、先ほどのスクリプトをコピーします。
2. コピーしたスクリプトを新しいテキストファイルに貼り付けます。
3. テキストファイルを保存しますが、拡張子を `.ps1` に変更します。例えば、`ConvertToJapaneseEra.ps1` という名前にします。
4. 保存した `.ps1` ファイルを任意の場所に配置します。デスクトップに配置するのが便利です。
5. 保存した `.ps1` ファイルに対して、右クリックし、"プロパティ" を選択します。
6. "プロパティ" ウィンドウが開いたら、「一般」タブに移動します。
7. 「種類」セクションの「変更」ボタンをクリックします。
8. 「選択プログラム」ウィンドウが開かれるので、そこで "Windows PowerShell" を選択し、「OK」をクリックします。
9. 再び "プロパティ" ウィンドウに戻り、「適用」または「OK」をクリックします。

実行
1. ダブルクリックでスクリプトを実行します。
2. 指示に従って西暦の生年月日を入力します。何も入力せずにEnterキーを押すと終了します。
3. スクリプトが和暦の生年月日と年齢を表示します。

スクリプトの詳細

このスクリプトは、西暦の生年月日を "yyyyMMdd" 形式で受け入れます。入力された日付を和暦に変換し、その後、現在の日付との差を計算して年齢を求めます。その際、生年月日が現在の日付より後の場合は、年齢を1つ下げます。

このスクリプトを使えば、簡単に西暦から和暦への変換と年齢計算を行うことができます。便利なPowerShellスクリプトとして、ぜひお役立てください。