第10話 紀元前4713年1月1日

 暦の話をしようと思う。


 私達の日常生活の中で「暦の計算」はしばしば必要になるが、通常私たちが使う暦の表記法は「計算」を行うのに甚だ不適当だ。2018年7月3日から50日後の日付を求めよ、と言った類の課題はコンピュータプログラムの練習問題として良く出題される例題だが、この種の計算に際しては「2018年7月3日」などといった形式は使い難い。そもそも日本や欧州、米国ではそれぞれ暦の表記法が違う。暦法まで追加すると、余計にややこしい。

 少し考えて、じゃあ年初からの日数で扱えば……と思うだろうが、その場合今度は年を跨ぐ計算がやはり面倒になる。閏年に増やされる一日が2月29日という半端なところに入るため、その処理も必要だ。

 この種の問題は当然昔からあるわけで、既にこのような計算に便利なものが考案されている。それが「ユリウス通日」だ。


 ユリウス通日(Julian Day)はユリウス暦紀元前4713年1月1日を起点とした積算日数で、例えば2018年7月3日(協定世界時0時)は2458302.5となる。小数点以下は一日の中での時刻を表すが、必要ない場合はJulian Day Numberといってその日の正午の整数値2458303として使う。なお、JD/JDNでは桁数が多すぎる場合、正子のJDから2400000.5を引いたものを修正ユリウス日(MJD)といって、これを用いる場合もある。2018年7月3日のMJDは58302となる。

 JDNやMJDからグレゴリオ暦、ユリウス暦への変換、または逆変換の数式は既に確立しており、プログラミング言語によっては標準的な命令・ライブラリが用意されているため、コンピュータ上で日付計算をするのには非常に重宝する。二つの日付の間の日数なども、単純な計算で導き出せる。今日のJDNからあなたが生まれた日のJDNを差し引けば、あなたが生きてきた日数もあっさり弾き出せる。曜日も干支も、月齢も計算できる大変便利な代物なのだ。

 気軽に試してみたい方は、国立天文台の暦計算室の暦象年表のページから変換ページヘのリンクを辿れるので、色々遊んでみると楽しめる。


 かくしてコンピュータで日付情報を扱う場合は、暦法的な表記と内部的なデータを切り離し、後者には計算に適するJDNやMJDを用い、表示に際してグレゴリオ暦(や国や地域によってはヒジュラ暦など、現地で使用される暦)に変換する、というのが〝冴えたやり方〟とされるところである。

 とは言え、JDNやMJDと「人間が読める暦」を変換する際には、その場所・地域・時代で使われていた暦を確認しないといけないのは絶対である。


 なお、この「ユリウス通日」だが、暦法の「ユリウス暦」とは似た名前ながら全く別物、という辺りが面倒だったりする。考案者である古典学者のヨセフ・ユストゥス・スカリゲルが、父ユリウス・カエサル・スカリゲルにちなんだとも、さらにその大本であるガイウス・ユリウス・カエサルに因んで命名したとも囁かれるところである。

  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る