Locale と TimeZone のどちらも、アプリケーション内では
2通りの取得のされ方があります。
前者は、アプリケーションの実行環境とは関係なく、 直接 Locale や TimeZone を指定したい場合です。 たとえばある特定の言語でのカレンダーの月の名前を知りたい、 世界の各都市の現在の時刻を同時に表示させいたい、というようなケースです。 Localeならばコンストラクタまたは staticなLocale値を指定して オブジェクトを得ます。 TimeZoneならば staticなメソッド getTimeZone() を使ってオブジェクトを得ます。
Locale locale = new Locale( "ja", "JP" );
または
Locale locale = Locale.JAPAN;
TimeZone zone = TimeZone.getTimeZone( "JST" );
後者のケースは、逆にシステム(ユーザー環境)に合わせてアプリケーションが
最適なリソースを選択したい場合です。
たとえば時計のアプリケーションが一番理解しやすい例でしょう。
同一のプログラムであっても、LocaleやTimeZoneの情報に合わせて
表示の言語、形式を最適なものに合わせ、
さらに時差の違いも処理することが可能になります。
Localeも TimeZoneも現在のデフォルトの情報を取得するための
getDefault()メソッドが用意されています。
Localeや TimeZoneは次のようにして利用するケースが最も多いでしょう。
Locale locale = Locale.getDefault();
TimeZone zone = TimeZone.getDefault();
ソースファイル