convert / date

西暦・和暦変換

西暦(グレゴリオ暦)と和暦(令和・平成・昭和・大正・明治)を相互変換します。元号の境界日を正確に処理します。

令和8年3月16日

使い方

01
  1. 「西暦 → 和暦」タブで年月日を入力すると、対応する和暦が表示されます
  2. 出力形式は「漢字(令和6年)」と「英字(R6)」から選択できます
  3. 「和暦 → 西暦」タブでは元号・年・月・日を入力して西暦に変換できます

実装コード

02

元号テーブルを新しい順に並べ、数値比較で境界判定します。new Date() を使わずタイムゾーン問題を回避しています。

const ERAS = [
  { kanji: '令和', alpha: 'R', start: [2019, 5,  1],  baseYear: 2019 },
  { kanji: '平成', alpha: 'H', start: [1989, 1,  8],  baseYear: 1989 },
  { kanji: '昭和', alpha: 'S', start: [1926, 12, 25], baseYear: 1926 },
  { kanji: '大正', alpha: 'T', start: [1912, 7,  30], baseYear: 1912 },
  { kanji: '明治', alpha: 'M', start: [1868, 1,  25], baseYear: 1868 },
] as const

export function toWareki(
  year: number, month: number, day: number, style: 'kanji' | 'alpha'
): WarekiResult | null {
  for (const era of ERAS) {
    const [sy, sm, sd] = era.start
    if (compareDates(year, month, day, sy, sm, sd) >= 0) {
      const eraYear = year - era.baseYear + 1
      // ...
      return { era, year: eraYear, yearLabel, full }
    }
  }
  return null  // 明治元年より前
}

よくある使用例・注意点

03
元号の境界について
明治・大正・昭和・平成・令和はそれぞれ特定の日付から始まります。例えば昭和は1926年12月25日から、平成は1989年1月8日からです。このツールはその境界日を正確に処理します。
元年(1年目)の表示
漢字形式では1年目を「元年」と表示します(例:令和元年)。英字形式では「R1」のように数字1で表示します。
対応範囲
明治元年(1868年1月25日)以降の日付に対応しています。それより前の日付を入力するとエラーが表示されます。
春分・秋分との組み合わせ
祝日計算(春分の日・秋分の日)との組み合わせが必要な場合は、「日本の祝日計算」ツールも合わせてご利用ください。

関連ツール

04
日本の祝日計算営業日計算文字数カウンター

ソースコード

05

このツールのソースコード(テストコードを含む)はGitHubで公開しています。MITライセンスで自由に利用・改変できます。

GitHub でコードを見る →