Javaを使って西暦と和暦を簡単に変換する10の方法 – JPSM

Javaを使って西暦と和暦を簡単に変換する10の方法

Javaのロゴと日本の伝統的なカレンダーJava
この記事は約31分で読めます。

 

【サイト内のコードはご自由に個人利用・商用利用いただけます】

このサービスは複数のSSPによる協力の下、運営されています。

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

また、理解しにくい説明や難しい問題に躓いても、JPSMがプログラミングの解説に特化してオリジナルにチューニングした画面右下のAIアシスタントに質問していだければ、特殊な問題でも指示に従い解決できるように作ってあります。

基本的な知識があればカスタムコードを使って機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

Javaプログラミング言語を使用して西暦と和暦の変換を行う技術は、現代のソフトウェア開発において非常に便利かつ重要なスキルとなっています。

この技術は特に、データベースやウェブアプリケーションで日付データを扱う際に日本特有の日付表示に対応する必要がある場合に利用されます。

この記事では、Javaを使って西暦と和暦を簡単に変換する10の方法に関連する内容を詳細に解説します。

これにより、読者の皆様は日付変換の手間が大幅に減り、より効率的にプログラムを作成できるようになることが期待できます。

さらに、この知識を利用して、新しいプログラムを作成する際にも非常に有用な情報となるでしょう。

●Javaとは

Javaは、1995年にサン・マイクロシステムズ(現在はオラクル社が所有)によって開発されたプログラミング言語です。

Javaは、その豊富なライブラリと、プラットフォームに依存しない特性から、ウェブアプリケーションやエンタープライズレベルのアプリケーション開発で広く利用されています。

○Javaの基本概念

Javaの基本概念には、オブジェクト指向プログラミング、ガベージコレクション、例外処理といった要素が含まれます。

オブジェクト指向プログラミングは、データとそのデータを操作するメソッドを一緒にグループ化する方法であり、これによりコードの再利用性と保守性が向上します。

ガベージコレクションは、不要になったオブジェクトを自動的に削除し、メモリリークを防ぐ機能です。

例外処理は、プログラムで発生する様々な種類のエラーを効果的に処理する方法を提供します。

□西暦と和暦変換の重要性

西暦と和暦の変換は、特に日本でのシステム開発やデータ処理において非常に重要です。

日本では、公的な文書や正式な書類では和暦が使用されることが多く、システムが両方の日付形式を扱えることは必須となります。

このため、プログラムで日付変換をスムーズに行える技術は、日本のITプロフェッショナルにとって重要なスキルと言えます。

●Javaを使った西暦と和暦の変換方法

Javaは、グローバルに使われるプログラミング言語であり、多くの場合、データの変換処理が必要となります。

中でも、日付の変換は頻繁に行われる操作です。

ここでは、Javaを使用して西暦と和暦を変換する方法について詳しく解説します。

○サンプルコード1:基本的な変換法

ここでは、基本的な変換法について解説します。

まずは、次のようなコードを参照してください。

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class DateConversion {
    public static void main(String[] args) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("Gyyyy年MM月dd日");
        LocalDate date = LocalDate.now();
        String formattedDate = date.format(formatter);
        System.out.println(formattedDate);
    }
}

このコードではLocalDateクラスとDateTimeFormatterクラスを用いて現在の日付を取得し、和暦に変換して表示しています。

"Gyyyy年MM月dd日"というパターンを指定することで、西暦を和暦に変換します。

実行すると、現在の日付が和暦でコンソールに表示されます。

表示される結果は、例えば「令和4年09月18日」といった形式になります。

○サンプルコード2:西暦から和暦への変換

次に、西暦から和暦への変換方法について説明します。

具体的なコードは次の通りです。

import java.time.LocalDate;
import java.time.chrono.JapaneseDate;
import java.time.format.DateTimeFormatter;

public class SeirekiToWareki {
    public static void main(String[] args) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("Gyyyy年MM月dd日");
        LocalDate date = LocalDate.of(2023, 9, 18);
        JapaneseDate japaneseDate = JapaneseDate.from(date);
        String formattedDate = japaneseDate.format(formatter);
        System.out.println(formattedDate);
    }
}

上記のコードは、特定の西暦の日付(2023年9月18日)を和暦に変換しています。

LocalDate.of(2023, 9, 18)で西暦の日付を設定し、JapaneseDate.from(date)を使って和暦に変換します。

実行結果は、「令和5年09月18日」といった形式で表示されます。

○サンプルコード3:和暦から西暦への変換

この部分では、Java言語を使用して和暦を西暦に変換する方法を取り上げます。

和暦から西暦への変換を行う基本的なJavaコードをご紹介します。

下記のコードは、和暦の年月日を入力として受け取り、それを西暦の形式に変換して出力するプログラムです。

import java.time.LocalDate;
import java.time.chrono.JapaneseDate;
import java.time.format.DateTimeFormatter;

public class HeiseiToGregorian {
    public static void main(String[] args) {
        // 和暦の日付を作成(ここでは例として令和3年9月18日を設定)
        JapaneseDate japaneseDate = JapaneseDate.of(3, 9, 18);

        // 和暦から西暦への変換
        LocalDate gregorianDate = LocalDate.from(japaneseDate);

        // 西暦の日付を表示形式に変換
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
        String formattedDate = gregorianDate.format(formatter);

        // 西暦の日付をコンソールに出力
        System.out.println("西暦での日付: " + formattedDate);
    }
}

このコードではJapaneseDate.ofメソッドを使って令和3年9月18日という和暦の日付を作成しています。

次にLocalDate.fromメソッドを用いてその和暦の日付を西暦に変換します。

そして最後にDateTimeFormatterを用いてその西暦の日付を指定した表示形式(ここでは「yyyy年MM月dd日」)に変換し、コンソールに出力します。

このコードを実行すると、コンソールには「西暦での日付: 2023年09月18日」と表示されることが期待されます。

これにより、和暦から西暦への変換が無事に行えることが確認できます。

○サンプルコード4:現在の日付を和暦で取得

下記のコードは、現在の日付を和暦で表示するサンプルとなります。

このコードを実行すると、システムの現在日時を取得し、それを和暦に変換して表示します。

具体的なコードの流れとしては、まずJavaのCalendarインスタンスを取得し、そのインスタンスから年、月、日の情報を取り出し、それを和暦に変換してコンソールに出力します。

import java.util.Calendar;
import java.text.SimpleDateFormat;

public class Main {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.ERA, Calendar.JAPANESE_IMPERIAL);
        SimpleDateFormat sdf = new SimpleDateFormat("GGGGy年MM月dd日(E)");
        System.out.println("現在の日付(和暦): " + sdf.format(calendar.getTime()));
    }
}

このコードの説明を行います。

まず、Calendarクラスからインスタンスを生成し、和暦の時代を示すCalendar.JAPANESE_IMPERIALを設定しています。

次に、SimpleDateFormatクラスを用いて、日付のフォーマットを設定します。

ここでは「GGGGy年MM月dd日(E)」というフォーマットを指定しており、「GGGG」は時代を、「y」は年を、「MM」は月を、「dd」は日を、「E」は曜日を表しています。

最後に、formatメソッドを使ってCalendarインスタンスから取得した日付データをフォーマットし、コンソールに出力しています。

このコードを実行すると、「現在の日付(和暦): 令和3年09月18日(土)」といったような結果が得られます(実行時期によって表示される日付は異なります)。

○サンプルコード5:特定の範囲での変換

Javaを使った西暦と和暦の変換には様々な方法があります。

こちらでは、特定の範囲での変換に焦点を当てて詳しく解説していきます。

特定の範囲とは、例えば西暦1980年から2000年までの範囲や、平成の期間など、限定的な範囲内での変換を指します。

これは、ある一定期間内のみの変換が必要な場面が多々あるため、非常に実用的です。

import java.util.HashMap;
import java.util.Map;

public class DateConverter {

    private static final Map<Integer, String> eraMap = new HashMap<>() {{
        put(1989, "平成");
        put(2019, "令和");
    }};

    public static String toJapaneseEra(int year) {
        for (Map.Entry<Integer, String> entry : eraMap.entrySet()) {
            if (year >= entry.getKey()) {
                int eraYear = year - entry.getKey() + 1;
                return entry.getValue() + eraYear + "年";
            }
        }
        return "該当する和暦はありません";
    }

    public static void main(String[] args) {
        System.out.println(toJapaneseEra(1995));  // 平成7年
    }
}

このコードでは、HashMapを使って西暦と和暦の対応関係を保存しています。

toJapaneseEra関数は、指定した西暦がどの和暦に対応するかをチェックし、その和暦を返します。

このコードを実行すると、平成7年という結果を得ることができます。

しかしながら、この方法は特定の範囲のみでの変換に適しています。

もし、より広い範囲や、新しい和暦が追加された場合、Mapに新しい和暦を追加する必要があります。

○サンプルコード6:例外処理を伴う変換

Javaで西暦と和暦の変換を行う際には、例外処理は欠かせません。

特に、ユーザー入力や外部データを基に変換を行う際には、不正確なデータや存在しない日付など、様々な例外が発生する可能性があります。

このような状況に備えて、例外処理を適切に実装することで、予期しないエラーやアプリケーションのクラッシュを防ぐことができます。

西暦と和暦の変換時に例外処理を伴うJavaのサンプルコードを紹介します。

import java.util.Scanner;

public class DateConversionWithExceptionHandling {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("西暦を入力してください(例:2023): ");
        int seireki = scanner.nextInt();

        try {
            String wareki = convertToWareki(seireki);
            System.out.println("変換された和暦は" + wareki + "です。");
        } catch (IllegalArgumentException e) {
            System.out.println("変換できない西暦が入力されました: " + e.getMessage());
        }
    }

    private static String convertToWareki(int year) {
        if (year < 1989) {
            throw new IllegalArgumentException("このサンプルでは1989年以降の西暦のみをサポートしています。");
        } else if (year == 1989) {
            return "平成1年";
        } else {
            return "平成" + (year - 1988) + "年";
        }
    }
}

このコードでは、ユーザーからの入力を受け取り、それを和暦に変換します。

convertToWarekiメソッドを通して1989年以前の西暦が入力された場合、IllegalArgumentExceptionをスローします。

この例外はmainメソッドのtry-catchブロックでキャッチされ、エラーメッセージとともにコンソールに出力されます。

このコードを実行すると、例えば1985年を入力すると、エラーメッセージが表示されます。一方、1990年を入力すると、”平成2年”という結果が得られます。

このように、例外処理を適切に実装することで、ユーザーに対して親切でわかりやすいエラーメッセージを表示することができます。

○サンプルコード7:外部ライブラリを利用した変換

Javaを用いて日付の変換を行うとき、外部ライブラリを活用することでより簡単に、そして効率的に変換を実行することができます。

特に、西暦と和暦の変換においては、複雑な計算や例外処理が生じることがあるため、信頼性の高いライブラリを使うことが推奨されます。

今回は、Javaで人気の日付処理ライブラリ「Joda-Time」を利用した変換方法を紹介します。

Joda-Timeは日付や時間の処理に特化したライブラリで、多機能かつ高速です。

まず、Mavenを使用している場合、次の依存関係をpom.xmlに追加します。

<dependency>
    <groupId>joda-time</groupId>
    <artifactId>joda-time</artifactId>
    <version>2.10.10</version>
</dependency>

次に、Joda-Timeを用いた西暦と和暦の変換コードを紹介します。

import org.joda.time.DateTime;
import org.joda.time.chrono.JapaneseChronology;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;

public class DateConversion {
    public static void main(String[] args) {
        // 西暦から和暦への変換
        DateTimeFormatter formatter = DateTimeFormat.forPattern("GGGGy年M月d日");
        DateTime dateTime = new DateTime(2023, 9, 18, 0, 0, 0, 0);
        String japaneseDate = formatter.withChronology(JapaneseChronology.getInstance()).print(dateTime);
        System.out.println(japaneseDate);

        // 和暦から西暦への変換
        DateTime parsedDateTime = formatter.withChronology(JapaneseChronology.getInstance()).parseDateTime("令和5年9月18日");
        System.out.println(parsedDateTime.toString("yyyy-MM-dd"));
    }
}

このコードでは、まずDateTimeFormatを使って日付のフォーマットを指定しています。

“GGGGy年M月d日”というフォーマットを設定することで、和暦の元号と年を取得することができます。

続いて、DateTimeオブジェクトを生成し、日付を和暦に変換して表示します。

逆に和暦から西暦への変換も表しています。

和暦の日付文字列をparseDateTimeメソッドでDateTimeオブジェクトに変換し、その後、西暦の形式で出力しています。

上記のコードを実行すると、令和5年9月18日が表示され、次に、2023-09-18という西暦の形式で日付が表示されます。

Joda-Timeを使うことで、日付の変換を簡単かつ正確に実行できることがわかります。

多くの機能やオプションが用意されているので、さまざまな日付処理にも対応することができます。

○サンプルコード8:ユーザー入力を基にした変換

ここでは、Javaを使用してユーザーの入力を基に西暦と和暦の変換を行う方法について詳細に説明します。

具体的なサンプルコードを見ていきましょう。

下記のコードは、ユーザーに西暦を入力させ、それを和暦に変換するものです。

import java.util.Scanner;

public class DateConversion {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("西暦を入力してください: ");
        int seireki = scanner.nextInt();

        int heisei = seireki - 1988;
        int showa = seireki - 1925;

        System.out.println("入力された西暦は、平成" + heisei + "年または昭和" + showa + "年に相当します。");
    }
}

このコードでは、まずScannerクラスをインポートし、そのインスタンスを作成しています。

次に、ユーザーに西暦の入力を促し、入力された値を変数seirekiに格納します。

そして、その西暦を平成と昭和の年に変換し、結果を表示します。

このコードを実行すると、ユーザーは西暦を入力し、その西暦が平成と昭和のどの年に相当するかが表示されます。

ただし、このコードは平成と昭和の年数変換のみを行うため、他の時代(例:大正、明治)への変換は行いません。

次に、ユーザーが和暦を入力し、それを西暦に変換するコードを考えてみましょう。

下記のコードはその一例となります。

import java.util.Scanner;

public class DateConversion {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("和暦を入力してください(例:昭和56): ");
        String wareki = scanner.next();
        int year = scanner.nextInt();

        int seireki;
        if (wareki.equals("昭和")) {
            seireki = year + 1925;
        } else if (wareki.equals("平成")) {
            seireki = year + 1988;
        } else {
            seireki = -1;
            System.out.println("未対応の元号です。");
        }

        if (seireki != -1) {
            System.out.println("入力された和暦は、西暦" + seireki + "年に相当します。");
        }
    }
}

このコードでは、ユーザーに和暦の元号と年を入力させ、その入力を西暦に変換します。

元号が昭和や平成の場合、適切な年数を加えて西暦に変換し、結果を表示します。

ただし、未対応の元号が入力された場合は、エラーメッセージを表示します。

○サンプルコード9:GUIを使用した変換ツールの作成

ここでは、Javaを使って西暦と和暦を簡単に変換できるGUI(Graphical User Interface)ツールの作成方法を解説します。

GUIツールは、視覚的なインターフェースを提供し、ユーザーが直感的に操作できるのが特徴です。

今回はSwingライブラリを利用してGUIツールを作成します。

SwingはJavaの一部で、豊富なGUIコンポーネントを提供しています。

下記のサンプルコードでは、ユーザーが簡単に西暦と和暦を変換できるGUIツールを作成します。

それでは、具体的なサンプルコードとその説明を紹介します。

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Main extends JFrame {
    private JTextField inputField;
    private JLabel resultLabel;

    public Main() {
        setTitle("西暦和暦変換ツール");
        setSize(300, 200);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel panel = new JPanel();
        panel.setLayout(new FlowLayout());

        JLabel instructionLabel = new JLabel("年号を入力してください:");
        panel.add(instructionLabel);

        inputField = new JTextField(15);
        panel.add(inputField);

        JButton convertButton = new JButton("変換");
        panel.add(convertButton);

        resultLabel = new JLabel("結果:");
        panel.add(resultLabel);

        convertButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String inputText = inputField.getText();
                if(inputText.matches("^[0-9]+$")) {
                    int year = Integer.parseInt(inputText);
                    if(year >= 1868 && year <= 1912) {
                        resultLabel.setText("結果:明治" + (year - 1867) + "年");
                    } else if(year >= 1912 && year <= 1926) {
                        resultLabel.setText("結果:大正" + (year - 1911) + "年");
                    } else if(year >= 1926 && year <= 1989) {
                        resultLabel.setText("結果:昭和" + (year - 1925) + "年");
                    } else if(year >= 1989) {
                        resultLabel.setText("結果:平成" + (year - 1988) + "年");
                    } else {
                        resultLabel.setText("結果:不明");
                    }
                } else {
                    resultLabel.setText("結果:無効な入力");
                }
            }
        });

        add(panel);
    }

    public static void main(String[] args) {
        Main frame = new Main();
        frame.setVisible(true);
    }
}

上記のコードでは、まず必要なクラスをインポートしています。その後、Mainクラスを定義し、JFrameを拡張しています。

コンストラクタ内でGUIコンポーネントを初期化し、FlowLayoutを使用してコンポーネントをパネルに配置しています。

そして、変換ボタンのアクションリスナー内で年号の変換を行っています。

ユーザーが無効な入力を行った場合には、適切なエラーメッセージが表示されます。

このコードを実行すると、ウィンドウが表示され、ユーザーは年号をテキストフィールドに入力できます。

変換ボタンを押すと、結果がラベルに表示されます。

各年号の範囲に応じて、西暦から和暦への変換が行われます。

このツールは初心者でも簡単に利用できるように設計されており、コードの構造もシンプルで理解しやすいです。

このツールを使って、西暦と和暦の変換を簡単かつ迅速に行うことができます。

○サンプルコード10:APIを利用しての変換

ここでは、Javaを使用してAPIを通じて西暦と和暦の変換を行う方法を解説します。

APIを利用すると、多くのデータを簡単かつ効率的に処理でき、プログラミング初心者から上級者までが利用できます。

実際にJavaを使用してAPIを利用した西暦と和暦の変換を行うサンプルコードを紹介します。

import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

public class DateConversion {
    public static void main(String[] args) {
        OkHttpClient client = new OkHttpClient();

        Request request = new Request.Builder()
            .url("https://apiサービスのURL/西暦和暦変換?year=2023")
            .build();

        try (Response response = client.newCall(request).execute()) {
            String result = response.body().string();
            System.out.println("変換結果: " + result);
        } catch (Exception e) {
            System.out.println("API呼び出し中にエラーが発生しました: " + e.getMessage());
        }
    }
}

このコードでは、「OkHttpClient」を使ってAPIにアクセスしています。

具体的には、「Request.Builder」クラスを使用してAPIのURLとパラメータを設定し、その後「client.newCall(request).execute()」でAPIを呼び出しています。

このコードを実行すると、APIからのレスポンスを受け取り、そのレスポンスをコンソールに出力します。

さて、このコードを実行した場合の出力結果ですが、”変換結果: “に続いてAPIから受け取った和暦の年が表示されます。

APIが正常に機能していれば、”2023年”を和暦に変換した結果が得られます。

ただし、ここで指定されたAPIサービスのURLはプレースホルダであり、実際のAPIサービスのURLに置き換える必要があります。

●応用例

Javaでの変換方法を理解した後、次に他のプログラム言語でも西暦と和暦の変換方法を学ぶことが重要です。

特に、Python, TypeScript, JSは現在非常に人気があり、多くの開発者がこれらの言語を使用しています。

ここでは、それぞれの言語での簡単な変換方法とサンプルコードをご紹介します。

○サンプルコード11:他の言語(Python, TypeScript, JS)での変換方法

まず第一にPython言語での変換方法です。

Pythonはその読みやすさと、豊富なライブラリが特徴であり、下記のコードはPythonを使って西暦を和暦に変換する簡単な方法を表しています。

このコードでは、datetimeとjapanize-pyという二つのライブラリを使用して変換作業を行っています。

from datetime import datetime
import japanize_py

# 現在の日時を取得
now = datetime.now()

# 西暦から和暦への変換
japanese_date = japanize_py.japanize_date(now)

# 結果を表示
print(f"現在の日時(和暦): {japanese_date}")

上記のPythonコードを実行すると、現在の日付を和暦でコンソールに表示します。

japanize-pyは日本語の日付表示を簡単にすることができるライブラリです。

次に、TypeScript言語を用いた変換方法に移ります。

下記のサンプルコードでは、JavaScriptのスーパーセットであるTypeScriptを使用して、西暦から和暦への変換を行っています。

このコードでは、DateオブジェクトとtoLocaleDateStringメソッドを利用して変換作業を行っています。

const date = new Date();
const options = { era: 'long', year: 'numeric', month: 'long', day: 'numeric' };
console.log(date.toLocaleDateString('ja-JP-u-ca-japanese', options));

このTypeScriptコードを実行すると、現在の日付を和暦でコンソールに表示します。

toLocaleDateStringメソッドは、指定したロケールとオプションを使用して日付をフォーマットします。

最後にJavaScript言語での変換方法を見ていきます。

JavaScriptもTypeScriptと同様に、toLocaleDateStringメソッドを使って西暦から和暦への変換を行えます。

下記のサンプルコードは、その簡単な変換方法を表しています。

const date = new Date();
const options = { era: 'long', year: 'numeric', month: 'long', day: 'numeric' };
console.log(date.toLocaleDateString('ja-JP-u-ca-japanese', options));

このJavaScriptコードを実行すると、現在の日付を和暦でコンソールに表示します。

Python, TypeScript, JSの各言語において簡単な変換方法と実行結果を示しましたが、それぞれの言語の特性を活かした更なる応用例も可能ですので、ぜひ挑戦してみてください。

●変換時の注意点と対処法

Javaを使った日付変換にはいくつか注意点があります。

まず第一に、Javaでの日付変換は、時折不正確な結果を返すことがあります。

この点に関して、次の点に注意することが推奨されます。

  1. タイムゾーンの違い:日本時間と世界標準時(UTC)の差を適切にハンドリングする必要があります。タイムゾーンの差が無視されると、予期せぬ結果が得られることがあります。
  2. 年号の変更:平成から令和への変更のように、年号が変更されると変換が困難になることがあります。この問題を回避するためには、西暦年を基準に変換を行うことが推奨されます。

次に対処法について詳述いたします。

□タイムゾーンの設定

Javaでは、タイムゾーンを設定することができます。

日本時間(JST)を設定するサンプルコードを紹介します。

ZoneId zoneId = ZoneId.of("Asia/Tokyo");
ZonedDateTime zonedDateTime = ZonedDateTime.now(zoneId);

このコードではZoneIdクラスを使って日本のタイムゾーンを設定し、ZonedDateTimeクラスを使用して現在の日本時間を取得しています。

□西暦年を基準に変換

年号が変わる際に問題が起きないように、変換時には西暦年を基準に行う方法があります。

JapaneseDate japaneseDate = JapaneseDate.from(LocalDate.of(2023, 1, 1));

このコードを実行すると、西暦2023年1月1日を和暦である令和5年1月1日に変換します。

●カスタマイズ方法

Javaで西暦と和暦の変換を行う際には、さまざまなカスタマイズ方法があります。

これから具体的な方法やサンプルコードを紹介していきます。

さらに、各サンプルコードには詳細な説明と共に、実行後のコードも交えて解説します。

カスタマイズ方法には次のような項目があります。

○データフォーマットの調整

JavaのDateクラスやCalendarクラスを用いると、データフォーマットを自由にカスタマイズできます。

例えば、年を「令和3年」ではなく「R3年」と表示させることも可能です。

ここでは、具体的なコードとその実行結果を見ていきましょう。

import java.text.SimpleDateFormat;
import java.util.Date;

public class CustomDateFormat {
    public static void main(String[] args) {
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("GGyy年MM月dd日");
        String formattedDate = sdf.format(date);
        System.out.println(formattedDate);
    }
}

このコードではSimpleDateFormatクラスを利用して現在の日付を「GGyy年MM月dd日」という形式でフォーマットしています。

“GG”は元号を表し、”yy”は年を2桁で、”MM”は月を2桁で、”dd”は日を2桁で表示します。

このコードを実行すると、例えば”令和4年09月19日”というような形式で出力されます。

○ロケールの変更

Javaでは、Localeクラスを利用して、言語や地域に応じた表示を行うことができます。

ここでは、ロケールを変更して和暦の表示を変える方法を説明します。

import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;

public class ChangeLocale {
    public static void main(String[] args) {
        Date date = new Date();
        DateFormat df = DateFormat.getDateInstance(DateFormat.FULL, Locale.JAPAN);
        String formattedDate = df.format(date);
        System.out.println(formattedDate);
    }
}

このコードではLocaleクラスを使って日付を日本のロケールでフルフォーマットしています。

このコードを実行すると、例えば”2023年9月19日火曜日”といった形式で出力されます。

この方法は、他の国や地域にも適用することができます。

まとめ

今回の記事では、Java言語の基本的な知識から始め、多岐にわたる変換法のサンプルコードを紹介しました。

Javaを用いて西暦と和暦を簡単に変換する方法に関するこの記事が、あらゆるレベルのJavaプログラマーの皆様にとって有益であったことを願っております。

日付変換の手間が大幅に減り、より効率的なプログラム作成が可能となることを期待しています。