• 宇宙歴 1513.1

西暦や元号など、元年を定めて、1年を数え、記録する方法を「紀年法」という。これに対して暦(暦法)は、元日と月、そして1年を定義する。両方がそろって初めて特定の日時を指定することができる。日本語だと紀年法と暦法は区別されているが、英語の「Calendar(カレンダー)」には、両方の意味があり、特に区別する場合に「紀年法」を「Calendar era」と呼ぶ。

世界にはさまざまなカレンダーがあり、日本では、元号と呼ばれる「紀年法」が西暦と並んで広く利用されている。西暦になれてしまった身としては、元号で日時を表現するのは面倒なのだが、いまだに元号での表記などを使い続ける組織があり、用紙への記入などで元号を強制されることがある。

筆者は、自作のプログラムでPCのデスクトップにカレンダーを表示し、そこに西暦、元号の両方を表示しているので、「今年は令和何年?」といった質問には簡単に答えることができる。しかし、過去の日付を元号表記にする、あるいは日付計算の結果を元号表記にする場合がちょっと面倒だ。

Windowsの「電卓」アプリなんかにも日付計算の機能があるのだが、利用する日時は、システムの標準カレンダーの形式に従う。これは、「設定 ⇒ 時刻と言語 ⇒ 言語と地域 ⇒ 地域 ⇒ 地域設定 ⇒ 形式を変更ボタン」で「地域設定」(写真01)に入り、「カレンダー」を「和暦」にすることで、元号表示とすることができる。しかし、これをやると、タスクバーの時計やカレンダー、多くのアプリのデフォルトの日時設定が「和暦」になってしまう。元号大好きな人以外には、この方法はあまりおすすめしない。

  • 写真01: 「設定 ⇒ 時刻と言語 ⇒ 言語と地域 ⇒ 地域 ⇒ 地域設定 ⇒ 形式を変更ボタン」で「地域設定」を表示させ、「カレンダー」で「和暦」を選択すると、Windowsの標準カレンダー形式が和暦となり、タスクバーの時刻表示(写真右下)や電卓アプリの日付計算などで元号が表示されるようになる

となると、そのときどきに応じて和暦を使えるように考える必要がある。簡単な日付計算や西暦、和暦の変換などは、コマンドライン(PowerShell)から行える。ここで和暦表示を行う方法を考える。

PowerShellでは、日時を扱うとき、.NETのDateTimeオブジェクトを使う。DateTimeオブジェクトは、Windowsのカルチャ情報を併用することで、ローカル表現が可能になる。そのため、和暦のカレンダーを持つカルチャ情報オブジェクトを作成しておく。これを使うことで、日付を表すDateTimeオブジェクトなどを和暦表示させることができる。使う頻度が高いのであれば、あらかじめ以下のようにして和暦カレンダーを変数($MyCI)に定義しておく。


$MyCI = New-Object system.Globalization.CultureInfo("ja-JP")
$MyCI.DateTimeFormat.Calendar = New-Object System.Globalization.JapaneseCalendar

最初の行はカルチャー情報オブジェクトの作成で、2行目は、カルチャー情報のカレンダー情報を和暦カレンダー(JapaneseCalendar)に定義するもの。以後、$MyCIを使えば、任意のDateTimeオブジェクトを和暦表示できる。これは、PowerShellの起動プロファイル($PROFILEで参照可能)などに記述しておくことでいつでも使えるようになる。$MyCIが定義されたら、以下の方法で、DateTimeオブジェクトを元号表示できる。


(Get-Date "2024/05/02").ToString("ggy'年'MM月dd日",$MyCI)

上記で、"ggy"が元号表示の書式文字列となる。

なお、日本語版Windowsでは、Get-Dateコマンドは、元号表記を受け付ける。平成25年1月30日から200日後の日付を元号表記したければ、


(Get-Date "平成25年1月30日").AddDays(200).ToString("ggy'年'MM月dd日",$MyCI)

とすればよい。なお、後半の「~.ToString(……」以下を省略すると西暦表示になる。なお、Get-Dateでの元号による日付指定だが、「元年」を理解しないので「1年」と入力する必要がある。

今回のタイトルネタ「宇宙歴」は、SF系ドラマやアニメなどに登場する架空の紀年法や暦法、あるいは日時の表記形式を指す。宇宙が活動範囲内となったとき、広く、宇宙空間で利用できる日時の表記方法を作ったというものだ。設定にもよるが、地球に依存しないため、1年、1日といった単位は意味を成さなくなり、新たな表記方法が必要になり作られる。世界的に著名なのは、Star TrekシリーズのStartdateで、その和訳が「宇宙歴」である。「宇宙歴 1513.1」は、オリジナルシリーズ(いわゆる宇宙大作戦)の第1回放送“The Man Trap”で使われた宇宙暦。