天文学的紀年法

天文学的紀年法（てんもんがくてききねんほう、Astronomical year numbering）は、主として天文学で用いる紀年法である。紀元1年（西暦1年）以後の年数については通常の西暦の紀年法（歴史年）と同じであるが、紀元1年（西暦1年）より前については、0（ゼロ）と負数を用いて年数を表すので、通常の紀元前の紀年法とは、1年の差が生じる。例えばカエサルが暗殺された紀元前44年は、西暦-43年である。
この紀年法は、日付と時刻の表記に関する国際規格であるISO 8601でも採用されている（ISO 8601#年の表記（0000年より前、9999年より後））。西暦1年より前の、天文年と歴史年の絶対値の1年の差異は、食や合のような天文イベントを計算し、それらが言及された歴史イベントがいつ発生したかを判断するときに重要である。
なお、考古学や地質学では現時点から何年前であるかを示す「BP (年代測定)」(before present)を使用している。
記法.
通常の紀元・西暦の表現に用いられる接頭辞ADや接尾辞CE(Common Era)、BC(Before Christ)、BCE(Before Common Era)などは使わない。
紀元前の年の表示.
紀元前1年は0年、紀元前2年は-1年、紀元前3年は-2年、紀元前4年は-3年とする。一般に、紀元前"n"年（"n"は正の整数）は”-("n"-1)”で表される。
紀元後の年の表示.
紀元1年以降は通常の歴史年と同一であって、符号無しまたは正の符号で書かれる。すなわち、紀元"n"年（"n"は正の整数）は単に"n"または+"n"と書かれる。
天文学的紀年法を用いる理由.
天文学的紀年法を用いる理由は、西暦前から西暦後にわたる期間計算を簡便・単純にするためである。紀元前1年を跨ぐ期間の年数を計算するときには、通常の紀年法では0年が存在しないことを考慮しなければならないので計算が面倒かつ間違えやすい。天文学的紀年法では、単に期間の最後の年から期間の最初の年を差し引くだけで良く、計算が簡便である。
紀元1年（「1」）の前年が紀元前1年（「-1」）となる紀元前年数をそのまま用いると整数の算法に反することとなって、天文学的事象の期間計算に不具合が生じてしまう（「紀元前1年」、「1月0日」も参照のこと）。
天文学的紀年法が準拠する数直線：
例：紀元2年（ = 西暦 2年）から紀元前4年（ = 西暦 -3年）までの年数の算出法
ユリウス暦とグレゴリオ暦.
天文学者は、1582年よりも前（0年を含む）にはユリウス暦を、1582年以降にはグレゴリオ暦を使用する。例えば、ジャック・カッシーニ（1740年）、サイモン・ニューカム（1898年）、（2007年）がそのようにしている。
0年の使用.
ヨハネス・ケプラーはルドルフ表（1627年）において、太陽・月・土星・木星・火星・金星・水星の平均運動の表について「0年」のプロトタイプを使っていた。彼は、"Ante Christum"（紀元前）と"Post Christum"（紀元後）の間に"Christi" (Christ's)の年を置いた。1702年、フランスの天文学者フィリップ・ド・ラ・イールは、"Tabulæ Astronomicæ"の平均運動のページで、紀元前（"ante Christum"）の最後の年を「"Christum 0"」とした。すなわち、ケプラーが"Christi"と表記したものに「0」を付けた。最後に、1740年にフランスの天文学者ジャック・カッシーニは、"Tables astronomiques"においてこの年を単に「0」と表記し、それより前の年には"avant Jesus-Christ"、後の年には"après Jesus-Christ"を付けた。これにより、「0年」という表記の発明者は伝統的にカッシーニであるとされている。
カッシーニが0年を使った理由は次のように述べられている。
NASAのは、0年における50回の月相を挙げ、それが瞬間ではなく丸々一年であることを示している。ジャン・メーウスは次のように説明している。
0年なしの符号付き年.
ビザンチンの歴史家Venance Grumelは、紀元前の年に（マイナス記号で識別される）負の年を、紀元後の年に符号なしの正の年を表において使用した。ただし、彼の本の他の場所では、年を表記するのに通常のフランス語の"avant J.-C." (before Jesus Christ)と"après J.-C." (after Jesus Christ)を使っている。おそらく彼は表示スペースを節約するためにそうしただけであり、0年は使っていない。
XML Schemaのバージョン1.0は、コンピュータ間で交換されるデータをXMLで記述するためによく使用されるが、これには組み込みのプリミティブデータ型dateおよびdateTimeが含まれる。これらは、先発グレゴリオ暦を使用するISO 8601の観点から定義されているため0年を含める必要があるが、XML schemaの仕様では0年はないと規定されている。バージョン1.1では0年を含めることによってISO 8601の仕様に沿うように再定義されたが、これにより後方互換性を失うこととなった。