The Java Program: PrintDate.java
1 import java.text.DateFormat;
2 import java.text.SimpleDateFormat;
3 import java.util.Date;
4 import java.util.Locale;
5 import java.util.TimeZone;
6
7 class PrintDate {
8
9 private final static Locale [] locales = DateFormat.getAvailableLocales();
10
11 private static Locale find (String l) {
12 for (int i=0; i<locales.length; i++) {
13 if (l.equalsIgnoreCase (locales[i].toString())) return (locales[i]);
14 }
15 System.out.println ("No such locale '" + l + "'. Available locales are");
16 for (int i=0; i<locales.length; i++) {
17 System.out.println (locales[i]);
18 }
19 return null;
20 }
21
22 private static int style (String l) {
23 switch (Character.toLowerCase (l.charAt(0))) {
24 case 'f': return DateFormat.FULL;
25 case 'l': return DateFormat.LONG;
26 case 'm': return DateFormat.MEDIUM;
27 case 's': return DateFormat.SHORT;
28 default : return DateFormat.DEFAULT;
29 }
30 }
31
32 public static void main (String args[]) {
33 final Locale def = Locale.getDefault();
34 final TimeZone tz = TimeZone.getDefault();
35 System.out.println ("Default locale is '" + def + "'. Time zone is " + tz.getID());
36
37 Date d = new Date();
38 System.out.print ("An instance of 'Date' (now) as a string: ");
39 System.out.println (d);
40
41 final DateFormat format_my = new SimpleDateFormat ("EE MMM d h:mm a zz yyyy");
42 format_my.setTimeZone (tz);
43 System.out.print ("Using an explicit pattern: ");
44 System.out.println (format_my.format(d));
45
46 final int s = style (args[0]);
47 // The default locale is not necessarily one of the available ones
48
49 final DateFormat df_def = DateFormat.getDateInstance (s, def);
50 final DateFormat tf_def = DateFormat.getTimeInstance (s, def);
51 // TZ of default locale not necessarily the default TZ!
52 tf_def.setTimeZone (tz);
53 System.out.println (df_def.format(d) + " " + tf_def.format(d));
54
55 System.out.print ("Using the default date/time instance: ");
56 final DateFormat dtf_def = DateFormat.getDateTimeInstance (s, s);
57 System.out.println (dtf_def.format(d));
58
59 final Locale l = find (args[1]);
60 final DateFormat dtf = DateFormat.getDateTimeInstance (s, s, l);
61 System.out.print ("Using locale '" + l + "' and time zone " +
62 dtf.getTimeZone().getID() +": ");
63 System.out.println (dtf.format(d));
64
65 }
66 }