日付

シャレイア語を用いて日時を表現するときは、 普通ハイリア暦を用いる。 このハイリア暦は、 現実世界で使用できることが前提となっているため、 太陽の昇没や季節にずれが出ないように、 1 年および 1 日の長さは等しくしてある。 ただし、 それ以外の日時の体系は異なる。

1 日は地球上の 1 日と同じ長さとする。 1 ヶ月は 33 日あり、 1 年は 12 ヶ月ある。 12 ヶ月目は 1 年の長さを補正するための月であり、 平年では 2 日間、 閏年では 3 日間になる。

閏年は以下のように定める。 年数に 300 を加えた数値が 4 の倍数のときは閏年とするが、 100 の倍数のときは例外的に閏年にはせず、 400 の倍数のときはさらに例外として閏年とする。 初めに年数に 300 を加える点を除けば、 この決め方はグレゴリオ暦と同じである。 ただし、 グレゴリオ暦の年数とハイリア暦の年数は一致しないので、 閏年になる年が同じになるとは限らない。

地球上のグレゴリオ暦 2012 年 1 月 23 日を起点とし、 この日をハイリア暦 1 年 1 月 1 日と定める。 それ以降もしくはそれ以前の日付については、 すでに述べた法則にしたがって定める。

時刻

1 時間は 10 時間が地球上の 1 日に一致するように定める。 また、 100 分が 1 時間、 100 秒が 1 分になるように、 分および秒を定める。 この定義により、 ハイリア暦で用いる 1 秒は、 地球における 1 秒の 108/125 (=0.864) 倍になり、 少し短い。

ハイリア数

ハイリア暦の日付を定めるときに起点となった、 グレゴリオ暦 2012 年 1 月 23 日からの経過日数 (繰り上げ) を 「ハイリア数」 と呼ぶ。 すなわち、 グレゴリオ暦 2012 年 1 月 23 日はハイリア数は H1 となる。 また、 この前日の 2012 年 1 月 22 日のハイリア数は H0 とし、 それ以前は順に H1, H2 と負の数になる。

年月日を記す代わりに、 しばしばこのハイリア数が用いられる。 ハイリア数を用いると 2 つの日付の比較が行いやすくなるため、 データベースなどでは頻繁に用いられる。

ユリウス日数からの変換

以下の疑似コードにより、 ユリウス日数 (JDN) をハイリア暦の日付に変換することができる。 hairia がハイリア数で、 year, month, day がハイリア暦の日付である。 なお、 /% は、 それぞれ整数同士のわり算の商と余りを表している。

julian = ユリウス日数
count = julian - 1908087
hairia = julian - 2455949
raw_year = (4 * count + 3 + 4 * (3 * (4 * (count + 1) / 146097 + 1) / 4)) / 1461
remainder = count - (365 * raw_year + raw_year / 4 - raw_year / 100 + raw_year / 400)
year = raw_year - 1500 + 1
month = remainder / 33 + 1
day = remainder % 33 + 1

過去の暦について

シャレイア語の文脈で用いられる暦は、 過去に 2 回修正されている。 最も古い暦は 1 代 1 期の頃から使われていたもので、 「古代シャル暦」 と呼ばれている。 次の暦は 3 代 1 期から使われていたもので、 「シャル暦」 もしくは 「旧ハイリア暦」 と呼ばれている。 現行の暦は 4 代 1 期から使われているもので、 現在は 「新ハイリア暦」 もしくは単に 「ハイリア暦」 と呼ばれている。 なお、 当然だが、 過去の文献では暦の名前に 「古代」 や 「旧」 が付されていないので注意すること。

また、 H3321 以前は、 全ての暦において基準日の年号を 1 ではなく 1501 としていた。 新ハイリア暦の閏年の計算の際に年数に 300 を加えるのは、 この頃と計算結果を一致させるためである。

新旧ハイリア暦とグレゴリオ暦の変換は、 ここで行うことができる。 古代シャル暦については詳細が記された資料が現存しないため、 今のところ相互変換する術がない。