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 }