[21] 
[DFN[紀元前]]は、
[TIME[西暦元年][year:1]]よりも前の[[時代]]です。
元年の前年を紀元前1年、
その前年を2年のように数えていく[[カウントダウン的紀年法]]です。


* 西暦0年以前の取り扱い

[6] [[西暦]]は「0年」を置くか否かにより、2種類の表現方法がありえます。

[17] 主に[[歴史]]の文脈では、([[紀元後]])1年の前の年は「[[紀元前]]1年」 (-1年) とします。

[2] [[0年]]がないもの:
[FIG(list short)[
- 「[[紀元前]]」、「[[BC]]」、「[[BCE]]」などと記された[[西暦]]表記
- [[XML Schema 1.0]] [CODE(XML)@en[xs:dateTime]]
- [[XDM]] [CODE[AD][AD (XDM)]]
- [[Compact Time Format]]
]FIG]

[18] 主に[[天文学]]や[[計算機]]上の処理では、([[紀元後]])1年の前の年は「0年」、その更に前の年は
「-1年」とします ([DFN[[RUBY[天文学的紀年法][てんもんがくてききねんほう][astronomical year numbering]]]])。

[1] [[0年]]を置くもの:
[FIG(list short)[
- [[ISO 8601]] [[展開表現]]
- [[XML Schema 1.1]] [CODE(XML)@en[xs:dateTime]]
- [[XDM]] [CODE[ISO][ISO (XDM)]]
- [[東洋学文献類目の時代コード]]
]FIG]

[20] [[HTMLの日付形式]]は、([[紀元後]]) 1年以降の日付のみを対象とし、この問題を回避しています。

[10] [[SQLの日時形式]]は「0年」に特別な意味を与えています。

[23] 
[[0年]]を置か'''ない'''場合、
[[元期]]をまたぐ[[期間計算]]には注意が必要です。

[EG[
[24] 紀元前10年からみて紀元後10年は何年後でしょうか。
]EG]

[EG[
[25] 紀元前12年は[[グレゴリオ暦]]の[[閏年]]でしょうか?
]EG]

[22] 
混乱を防ぐため、
[[計算機]]処理では、
特別な理由がない限り、
[[0年]]を'''置く'''方法を選択するべきです。
[[計算機]]処理以外でも、
方法が指定されている場合を除き、
[[0年]]を'''置く'''方法を選択するべきです。




* 表記

[4] [[日本語]]では、「紀元前12年」や「前12年」のように表記します。

[5] [[中文]]では、「公元前12年」のように表記します。

[31] 
[[韓国語]]では[DFN[기원전]] (紀元前) と呼ばれます。

[27] [[越南語]]では [DFN[trước Tây lịch]] ([DFN[TTL]])
と呼ばれます。
「563 TTL」のように書かれます。

[32] 
[[越南語]]には「[[公元]]」系の
[DFN[Trước Công Nguyên]] ([DFN[TCN]]) 
の語もあり、
「563 TCN」
のように書かれます。

[181] 
[[RFC 2550]] は[[西暦紀元前]]を [[B.C.E.]] と表記していました。

[30] [[BC]] vs [[BCE]] については [[Common Era]] 参照。

[FIG(quote)[ [11] [[JIS X 7108:2004]] 4.2
[DFN[BC]] [[西暦紀元前]] ([[Before Christ]])
]FIG]

-*-*-

[34] 
「きげんぜん」 (紀元前) と「きげんせん」 (紀元1000)
は聞き間違えることがあるので要注意。

* 暦法

[13] 
[[グレゴリオ暦]]を用いる場合、
[[ユリウス暦]]を用いる場合、
その他の場合がありますので、注意が必要です。
[SEE[ [[西暦]], [[先発グレゴリオ暦]] ]]

* 換算

[19] [[換算][暦の換算]]は簡単ですが、間違いやすいです。

[15] [[西暦年]] ([[天文学的紀年法]]) [VAR[ad]]
を[[紀元前]]年 [VAR[bc]] に変換するには、

[FIG(math)[
[VAR[bc]] = 1 - [VAR[ad]] ([[assert]]: [VAR[ad]] ≦ 0)
]FIG]

[16] 
[[紀元前]]年 [VAR[bc]] を[[西暦年]] ([[天文学的紀年法]]) [VAR[ad]]
に変換するには、

[FIG(math)[
[VAR[ad]] = 1 - [VAR[bc]] ([[assert]]: [VAR[bc]] > 0)
]FIG]

* 世紀

[SEE[ [[紀元前世紀]] ]]


* メモ

[FIG(amazon)[
紀元前
]FIG]

[FIG(quote)[
[FIGCAPTION[
[3] [CITE@ja[B.C.(紀元前)、A.D.(紀元後)は、なぜ前者は英語で、後者はラテン語なのかを知りたい。 | レファレンス協同データベース]]
([[国立国会図書館]] 著, [TIME[2016-03-11 18:48:26 +09:00]] 版)
<http://crd.ndl.go.jp/reference/modules/d3ndlcrdentry/index.php?page=ref_view&id=1000029254>
]FIGCAPTION]

> 紀元以前の年の数え方は、比較的新しく、国により異なるらしい。
> 『歴史はいつ始まったか』によれば、「18世紀以降にはキリスト以前を意味するante Christ(略号A.C.)が用いられ、イギリスではそれを英語で示したbefore Christ(B.C.)が使用されるようになった。日本で一般的に使用されるB.C.は英語に結びつくもので必ずしも国際的とはいえない。」とあり。同書にはフランスの表記法も紹介されている。
> 《Wikipedia》にはフランス、ドイツ、スペイン語での表記法あり。参考までに紹介する。

]FIG]

[FIG(quote)[
[FIGCAPTION[
[7] [CITE@ja[データ型]]
([TIME[2017-02-24 10:24:15 +09:00]])
<https://docs.oracle.com/cd/E57425_01/121/SQLRF/sql_elements001.htm>
]FIGCAPTION]

> Oracle Databaseでは、ユリウス日の計算に天文学方式を使用しています。この方式では、紀元前4713年は-4712として計算されます。これに対し、歴史学方式では、紀元前4713年は-4713として計算されます。Oracleのユリウス日を、歴史学方式で計算した値と比較する場合には、紀元前の日付に365日の違いがあることに注意してください。

]FIG]


[FIG(quote)[
[FIGCAPTION[
[8] [CITE[The 21st Century and the 3rd Millennium]]
([TIME[2017-03-10 19:37:14 +09:00]])
<http://aa.usno.navy.mil/faq/docs/millennium.php>
]FIGCAPTION]

> We would say that Scaliger's initial epoch was 4713 BC or -4712. In the historical system of dating, AD 1 is preceded by 1 BC; there is no year 0. In the astronomical system, AD 1 is designated +1; this is preceded by year 0, which is preceded by year -1. The historical system was introduced in the 16th century. However, the astronomical system was not introduced until the 18th century.

]FIG]


[FIG(quote)[
[FIGCAPTION[
[9] [CITE[PostgreSQLとOracleの仕様の相異]]
([TIME[2011-12-07 15:12:08 +09:00]])
<http://interdbconnect.sourceforge.net/oracle_fdw/difference-ja.html>
]FIGCAPTION]

> 西暦1年の1年前は紀元前1年です。西暦1年の2年前は紀元前2年です。また、西暦0年および紀元前0年は存在せず、リテラルとして入力するとエラーとなります。	西暦1年の1年前は西暦0年です。西暦1年の2年前は紀元前1年です。また、西暦0年はデータとして保持可能ですが、リテラルとして入力するとエラーとなります。	紀元をまたいだ日付演算は、PostgreSQLの演算結果とOracleの演算結果で1年ずれます。

]FIG]


[12] [CITE@ja[天文学的紀年法 - Wikipedia]]
([TIME[2019-08-05 11:44:47 +09:00]])
<https://ja.wikipedia.org/wiki/%E5%A4%A9%E6%96%87%E5%AD%A6%E7%9A%84%E7%B4%80%E5%B9%B4%E6%B3%95>

[FIG(quote)[
[FIGCAPTION[
[14] [CITE@ja[1世紀 - Wikipedia]]
([TIME[2019-10-20 19:36:42 +09:00]])
<https://ja.wikipedia.org/wiki/1%E4%B8%96%E7%B4%80>
]FIGCAPTION]

> 天文学以外では通常、西暦0年は存在せず、また0世紀もない。これは、ヨーロッパで西暦ができた6世紀の時点では、まだヨーロッパ人は零の概念を知らなかったためであると言われることもあるが、元年以前を表すために紀元前が導入されたのは零の概念が普及した後の17世紀のことである。

]FIG]


[FIG(quote)[
[FIGCAPTION[
[26] [CITE[暦に関する雑学]]
([TIME[2004-01-17T07:26:00.000Z]], [TIME[2020-09-13T06:06:25.230Z]])
<http://www.toshiomi.net/kyotojtn/koyomi.htm>
]FIGCAPTION]

> しかし B.C. は英語であるため国際的でない。現にフランスではキリスト以前(avant Jesus-Christ)を略して av.J.-C. と書いている。

]FIG]


[28] [CITE[『紀元前』の成立 その文化史的意義]]
([TIME[2021-02-06T10:00:48.000Z]])
<https://webcache.googleusercontent.com/search?q=cache:eVSvFSxWjLMJ:https://otani.repo.nii.ac.jp/%3Faction%3Drepository_uri%26item_id%3D1331%26file_id%3D22%26file_no%3D1+&cd=2&hl=ja&ct=clnk&gl=jp>

[29] [CITE@ja[GijyouさんはTwitterを使っています 「去年、地球研の成果本がようやく出版されたおかげで、こういう図も作って公表できるようになりました。 ちなみに上の表は愛知県朝日遺跡で時期ごとに出土量が多い樹種で、下のグラフは年輪酸素同位体比から復元された年ごとの夏場の降水量です。 相関関係があるかどうかは、これから考えます。 https://t.co/lgCYu8QU5D」 / Twitter]]
(午前11:53 · 2021年1月20日 [TZ[+09:00]], [TIME[2021-02-07T01:28:24.000Z]])
<https://twitter.com/gijyou/status/1351724543585382400/photo/1>

[33] [CITE[25_1.pdf]], [TIME[2023-02-07T12:59:55.000Z]] <https://www.jstage.jst.go.jp/article/jhsj/25/157/25_1/_pdf/-char/ja#page=3>

「「天文年代学的な年数の数え方」」

「一般的理解のため」に [[BC]] を使っている。



[35] 
[CITE@ja-JP[英語学論説資料 第1号(昭和42年分).1号-3分冊]], [[論説資料保存会]], [TIME[1969.][1969]], [TIME[2025-10-29T01:48:45.000Z]], [TIME[2025-11-19T08:48:10.739Z]] <https://dl.ndl.go.jp/pid/12580149/1/679?keyword=%E5%B9%B4%E5%8F%B7> (要登録)
