ロケール
ロケールとは、言語や国ごとに異なる単位、記号、日付、通貨の表し方の規則のことです。
例えば、日本語でプログラムを作成したときは、通貨記号は「円」、英語で作成したときは「$」のように、地域によって表示形式を変えることができます。
各国のロケールを使用する場合は、まずjava.util.Localeクラスのインスタンスを生成します。
コンストラクタの引数に、言語コードや国名を指定することで、各地域のロケールオブジェクトを生成することができます。
またgetDefaultメソッドを使用すると、実行中のJava環境のデフォルトのロケールを返すことができます。
これらのロケールオブジェクトからgetDisplayCountryメソッドやgetDisplayLanguageメソッドを使って、国名や言語を取り出すことができます。
【java.util.Localクラスのコンストラクタ】
【Localeクラスの主なメソッド】
【Localeクラスのコンストラクタに使用できる言語・国コード(一部抜粋)】
【ロケールオブジェクトの取得】
import java.util.Locale; public class LocaleSample1 { public static void main(String[] args) { Locale japan = Locale.getDefault(); System.out.println("既定の国名は " + japan.getDisplayCountry()); System.out.println("既定の言語は " + japan.getDisplayLanguage()); Locale us = new Locale("en","US"); System.out.println("変更後の国名は " + us.getDisplayCountry()); System.out.println("変更後の言語は " + us.getDisplayLanguage()); } }
実行結果
既定の国名は日本 既定の言語は日本語 既定の国名はアメリカ合衆国 既定の言語は英語
4行目では、getDefaultメソッドで実行中のJava環境のデフォルトロケールを取り出します。
getDisplayCountry()
とgetDisplayLanguage()
で国名と言語を取り出しています。
ここでは、国名は日本、言語は日本語と表示されます。
8行目では、newキーワードを使用して、Localeクラスのインスタンスを作成します。
その際、コンストラクタの引数に、言語コードに英語、国コードに米国を指定しておくことで、ロケールを米国の表示形式で扱うことができるようになります。
数値・通貨の書式設定
数値や通貨は国によって表現方法が異なります。
ここでは、国別の書式を設定する方法を見ていきましょう。
数値や通貨の書式設定を行う場合は、java.text.NumberFormatクラスを利用します。
数値や通貨の書式設定を行うには、次の2段階で行います。
- NumberFormatクラスのstaticメソッドを使用して、書式設定をするためのオブジェクトを生成する
- NumberFormatクラスのformatメソッドを使用して、書式を設定する
【NumberFormatクラスのオブジェクトを生成するためのstaticメソッド】
上表の「フォーマット」とは書式と考えてよいでしょう。
それぞれに数値用(getInstance()
)と通貨用(getCurrencyInstance()
)があります。
また引数にロケールを指定すると、その国に対応したNumberFormatオブジェクトを返すことができます。
【数値や通貨をフォーマット(書式を設定する)format( )メソッド】
formatメソッドはオーバーロードされており、引数にdouble型とlong型をとるものが用意されています。
【数値・通貨の書式設定】
import java.text.NumberFormat; import java.util.Locale; class LocaleSample2{ public static void main(String args[]){ NumberFormat jpnum = NumberFormat.getInstance(); NumberFormat jpcurrency = NumberFormat.getCurrencyInstance(); System.out.println("日本の数値 " + jpnum.format(5000)); System.out.println("日本の通貨 " + jpcurrency.format(5000)); Locale us = new Locale("en","US"); NumberFormat usnum = NumberFormat.getInstance(us); NumberFormat uscurrency = NumberFormat.getCurrencyInstance(us); System.out.println("米国の数値 " + usnum.format(5000)); System.out.println("米国の通貨 " + uscurrency.format(5000)); } }
実行結果
日本の数値 5,000 日本の通貨 ¥5,000 米国の数値 5,000 米国の通貨 $5,000.00
5行目ではNumberFormatクラスのstaticメソッドgetInstance( )
を使用して、デフォルトのロケールの対応した、数値用Numberformatオブジェクトを取得しています。
ここでデフォルトは日本語です。
また6行目で、getCurrencyInstance( )
メソッドを使用して、デフォルトロケールに対応した、通貨用数値用Numberformatオブジェクトを取得しています。
7行目~8行目で、それぞれのオブジェクトに対してformatメソッドで書式を設定し、5000という数値に書式を設定すると、日本の数値 5,000、日本の通貨 ¥5,000と表示しています。
10行目では、Locale us = new Locale(“en”,“US”);
で米国のロケールオブジェクトを作成します。
上記と同様に、数値用と通貨用のNumberformatオブジェクトを作成し、それぞれのオブジェクトに対してformatメソッドで書式を設定し、米国の数値 5,000、米国の通貨 $5,000.00と表示しています。
日付・時刻の書式設定
日付や時刻にも国によって表現方法が異なります。
ここでは、日付や時刻に国別の書式を設定する方法を見ていきましょう。
日付や時刻に国別の書式設定を行う場合は、java.text.DateFormatクラスを利用し、表現された日付や時刻をフォーマット(書式設定)します。
日付や時刻に国別の書式設定を行うには、次の2段階で行います。
- DateFormatクラスのstaticメソッドを使用して、書式設定をするためのオブジェクトを生成する
- DateFormatクラスのformatメソッドを使用して、書式を設定する
【DateFormatクラスのオブジェクトを生成するためのstaticメソッド】
getDateInstance()は、第1引数に、フォーマットスタイルという日付や時刻の書式を指定します。
実際には下図のスタイルを定数で指定します。
第2引数には、国を表すロケールを指定します。
【日本語のフォーマットスタイル】
【DateFormatクラスの書式を設定するためのメソッド】
DateFormatのオブジェクトを生成したら、そのオブジェクトにformatメソッドを使用して、書式を設定します。
【日付の書式設定】
import java.text.DateFormat; import java.util.Date; import java.util.Locale; class LocaleSample3{ public static void main(String args[]){ Locale loc_jp = new Locale("ja","JP"); Locale loc_us = new Locale("en","US"); DateFormat dfjp = DateFormat.getDateInstance(DateFormat.DEFAULT, loc_jp); DateFormat dfus = DateFormat.getDateInstance(DateFormat.DEFAULT, loc_us); Date today = new Date(); System.out.println("日本語のデフォルトの日付書式 " + dfjp.format(today)); System.out.println("米国のデフォルトの日付書式 " + dfus.format(today)); } }
実行結果
日本語のデフォルトの日付書式 2020/08/11 米国のデフォルトの日付書式 Aug 11, 2020
まず、6行目~7行目で、日本語用と米国用のLocaleオブジェクトを作成しておきます。
9行目~10行目では、getDateInstance( )
の引数に、デフォルトのスタイルフォーマットとロケールを指定して、DateFormatオブジェクトを生成します。
12行目では、Dateクラスを使用して、本日の日付を取得します。
14行目~15行目でformatメソッドを使用し、本日の日付に書式を設定すると、日本と米国の日付の書式設定が行われます。
まとめ
ロケール
- ロケールとは、言語や国ごとに異なる単位、記号、日付、通貨の表し方の規則のことです。
- java.util.Localeクラスのインスタンスに、言語コードや国名を指定することで、各地域のロケールオブジェクトを生成することができます。
数値・通貨の書式設定
- java.text.NumberFormatクラスを利用します。
- NumberFormatクラスのstaticメソッドを使用して、書式設定をするためのオブジェクトを生成します。
- NumberFormatクラスのformatメソッドを使用して、書式を設定します。
日付・時刻の書式設定
- java.text.DateFormatクラスを利用します。
- DateFormatクラスのstaticメソッドを使用して、書式設定をするためのオブジェクトを生成します。
- DateFormatクラスのformatメソッドを使用して、書式を設定します。
LINE公式アカウント
仕事が辛くてたまらない人生が、仕事が楽しくてたまらない人生に変わります。
【登録いただいた人全員に、無料キャリア相談プレゼント中!】