Closely related to the issue of internationalization is the java.util.Locale class. An instance of Locale represents a geographic, political, or cultural region, and may or may not correspond to a physical or political border. A default Locale is initially selected by Java based on the machine’s settings, but the default can be changed using the static setDefault() method in the Locale class. Many methods, such as those responsible for formatting date and time values, produce results that vary based on the Locale used. These methods typically allow the user either to explicitly specify the Locale to use or to omit it, in which case the default Locale will be used.
You can construct your own Locale instances, although you’ll typically want to use one that’s already defined. Some static instances representing commonly used locales are available in the Locale class, such as US (United States English), CANADA (Canadian English), CANADA_FRENCH (Canadian French), etc. In this code, the current date value is displayed in three formats: the user’s default Locale format, the US Locale format, and the CANADA Locale format:
Locale loc;DateFormat df;int style = DateFormat.SHORT;Date curdate = new Date();df = DateFormat.getDateInstance(style);System.out.println(df.format(curdate));loc = Locale.US;df = DateFormat.getDateInstance(style, loc);System.out.println(df.format(curdate));loc = Locale.CANADA;df = DateFormat.getDateInstance(style, loc);System.out.println(df.format(curdate));
The first line of output will vary based on the default locale at the time the code is run. However, the second line (US locale) will always use the mm/dd/yy format, while the third line (CANADA locale) will use dd/mm/yy.