0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

西暦から元号と干支を生成

Last updated at Posted at 2019-05-13

西暦から元号と干支を生成する

いままで知らなかったが、JavaScriptのDate.toLocaleDateStringメソッドを使い、西暦をもとに、「大化」から始まる公年号(元号)を簡単に生成できる。

date.toLocaleDateString
var date = new Date(645, 6, 1);
var option = {era:"short", year:"numeric"};
var str=date.toLocaleDateString("ja-JP-u-ca-japanese", option);
console.log(str); // 大化1年

大化は、6月19日から。それ以前の年は、すべて大化から遡る。たとえば、西暦344年は、「大化 -300年」が返される。

また、655年から685年、691年から700年の間は元号が建てられていないとされるが、それには対応していない。西暦661年は、前の「白雉」を引き継いで、実際には存在しないとされる白雉11年と生成される。

なお、現時点(2019年5月)のChromeでは、「令和」には対応していない。

日付について。それは理解を超える。

前項では、日付は表示していないが、もちろん表示できる。

日付を表示する
var date = new Date(1222, 3, 19);
var option = {era:"short"};
var str=date.toLocaleDateString("ja-JP-u-ca-japanese", option);
console.log(str); // 承久4年4月12日

承久は4月12日までなので、翌日の、new Date(1222, 3, 20) を渡すと、正しく、貞応1年4月13日 と生成される。

ただ、new Dateで生成している日付と、7日ずれている理由がよくわからない。
西暦1400年から前かと思うが、なぜか7日前後(常に7日ではない)ずれるのである。ずれかたからして暦法のからみではなさそうだ。閏だろうか。わたしの理解を超える。

干支の生成

干支の生成は、おそらくJSには実装されていないと思うが、生成はとても単純だ。

十干(じっかん)と、十二支の配列データを用意しておき、西暦を、それぞれ10と12を割った余りの値で導かれる。

干支を表示する
const e = ["", "", "", "", "", "", "", "", "", ""];
const to = ["", "", "", "", "", "", "", "", "", "", "", ""];

let year = 1868;
console.log(e[(year%10)], to[(year%12)]);//戊 辰

おまけ

wikipedia「干支」のページから抽出した干支の音訓読み、中国、韓国、ベトナム語読み、意味をデータにまとめた。

干支データ
const e10 = [

{kan: "" , ohn: "こう" , kun: "かのえ" , han: "gēng" , kor: "경 (gyeong)" , vet: "canh" , mean: "結実、形成、陰化の段階" },
{kan: "" , ohn: "しん" , kun: "かのと" , han: "xīn" , kor: "신 (shin)" , vet: "tân" , mean: "陰による統制の強化" },
{kan: "" , ohn: "じん" , kun: "みずのえ" , han: "rén" , kor: "임 (im)" , vet: "nhâm" , mean: "“妊”に通じ、陽気を下に姙む意" },
{kan: "" , ohn: "" , kun: "みずのと" , han: "guǐ" , kor: "계 (gye)" , vet: "quý" , mean: "“揆”に同じく生命のない残物を清算して地ならしを行い、新たな生長を行う待機の状態" },
{kan: "" , ohn: "こう" , kun: "きのえ" , han: "jiǎ" , kor: "갑 (gap)" , vet: "giáp" , mean: "草木の芽生え、鱗芽のかいわれの象意" },
{kan: "" , ohn: "おつ、いつ" , kun: "きのと" , han: "" , kor: "을 (eul)" , vet: "ất" , mean: "陽気のまだ伸びない、かがまっているところ" },
{kan: "" , ohn: "へい" , kun: "ひのえ" , han: "bǐng" , kor: "병 (byeong)" , vet: "bính" , mean: "陽気の発揚" },
{kan: "" , ohn: "てい" , kun: "ひのと" , han: "dīng" , kor: "정 (jeong)" , vet: "đinh" , mean: "陽気の充溢" },
{kan: "" , ohn: "" , kun: "つちのえ" , han: "" , kor: "무 (mu)" , vet: "mậu" , mean: "“茂”に通じ、陽気による分化繁栄" },
{kan: "" , ohn: "" , kun: "つちのと" , han: "" , kor: "기 (gi)" , vet: "kỷ" , mean: "“紀”に通じ、分散を防ぐ統制作用" },

];

const to12 = [
{kan: "" , ohn: "しん" , kun: "さる" , han: "shēn" , kor: "신 (shin)" , vet: "thân" , mean: "陰気の支配" },
{kan: "" , ohn: "ゆう" , kun: "とり" , han: "yǒu" , kor: "유 (yu)" , vet: "dậu" , mean: "酒熟して気の漏れる象。陰気の熟する所" },
{kan: "" , ohn: "じゅつ" , kun: "いぬ" , han: "" , kor: "술 (sul)" , vet: "tuất" , mean: "同音“恤”であり、“滅”である。統一退蔵。" },
{kan: "" , ohn: "がい" , kun: "" , han: "hài" , kor: "해 (hae)" , vet: "hợi" , mean: "“核”で、生命の完全な収蔵含蓄" },
{kan: "" , ohn: "" , kun: "" , han: "" , kor: "자 (ja)" , vet: "" , mean: "“孳”で、陽気が色々に発現しようとする動き" },
{kan: "" , ohn: "ちゅう" , kun: "うし" , han: "chǒu" , kor: "축 (chuk)" , vet: "sửu" , mean: "“紐”で、生命エネルギーの様々な結合" },
{kan: "" , ohn: "いん" , kun: "とら" , han: "yín" , kor: "인 (in)" , vet: "dần" , mean: "“演”で、形をとっての発生" },
{kan: "" , ohn: "ぼう" , kun: "" , han: "mǎo" , kor: "묘 (myo)" , vet: "mão/mẹo" , mean: "同音“冒”に通じ、開発の意" },
{kan: "" , ohn: "しん" , kun: "たつ" , han: "chén" , kor: "진 (jin)" , vet: "thìn" , mean: "“震”、同音“申”に同じ、生の活動" },
{kan: "" , ohn: "" , kun: "" , han: "" , kor: "사 (sa)" , vet: "tỵ" , mean: "“已”に通じ、陽盛の極、漸く陰に移ろうとする所" },
{kan: "" , ohn: "" , kun: "うま" , han: "" , kor: "오 (o)" , vet: "ngọ" , mean: "“忤(さからう)”に通じ、上昇する陰と下退する陽との抵触" },
{kan: "" , ohn: "" , kun: "ひつじ" , han: "wèi" , kor: "미 (mi)" , vet: "mùi" , mean: "“昧”で、陰気の支配" },
];

参考 wikipedia「元号」、同「干支」、「元号-年号から読み解く日本史」文藝春秋

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?