## Cambiar los Símbolos de Formateo de Fechas

El método format de SimpleDateFormat devuelve un String formado por dígitos y símbolos. Por ejemplo, en el String "Friday, April 10, 1998," los símbolos son "Friday" y "April." Si los símbolos encapsulados en SimpleDateFormat no cubren tus necesidades, puedes cambiarlos con la clase DateFormatSymbols. Se pueden cambiar los símbolos que representan los nombres de los meses, de los días de las semana, de las zonas horarias. etc.

Echemos un vistazo a un ejemplo que modifica los nombres cortos de los días de la semana. Podrás encontrar el código fuente de este ejemplo en el fichero llamado DateFormatSymbolsDemo.java. En este ejemplo, empezamos creando un objeto DateFormatSymbol para la Localidad de U.S. Tenemos curiosidad sobre las abreviaturas que encapsula DateFormatSymbol para los días de la semana, por eso llamamos al método getShortWeekdays. Hemos decidido crear versiones en mayúsculas de estas abreviaturas en el array de String llamado capitalDays. Luego aplicamos el nuevo conjunto de símbolos de captitalDays al objeto DateFormatSymbol con el método setShortWeekdays. Finalmente , ejemplarizamos la clase SimpleDateFormat, específicando el DateFormatSymbol que tenía los nuevos nombres. Aquí está el código fuente:

    Date today;
    String result;
    SimpleDateFormat formatter;
    DateFormatSymbols symbols;
    String[] defaultDays;
    String[] modifiedDays;

    symbols = new DateFormatSymbols(new Locale("en","US"));
    defaultDays = symbols.getShortWeekdays();

    for (int i = 0; i < defaultDays.length; i++) {
       System.out.print(defaultDays[i] + "  ");
    }
    System.out.println();

    String[] capitalDays = {
       "", "SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"};
    symbols.setShortWeekdays(capitalDays);

    modifiedDays = symbols.getShortWeekdays();
    for (int i = 0; i < modifiedDays.length; i++) {
       System.out.print(modifiedDays[i] + "  ");
    }

    System.out.println();
    System.out.println();

    formatter = new SimpleDateFormat("E", symbols);
    today = new Date();
    result = formatter.format(today);
    System.out.println(result);

La salida generada por este código se muestra abajo. La primera línea contiene los nombres cortos de los días de la semana antes de cambiarlos. La segunda línea contiene los nombres en mayúsculas que hemos aplicado con el método setShortWeekdays. Estas dos primeras líneas parecen identadas, porque la primera cadena del array de nombres es null. La última línea muestra el resultado devuelto por el método SimpleDateFormat.format.

      Sun  Mon  Tue  Wed  Thu  Fri  Sat
      SUN  MON  TUE  WED  THU  FRI  SAT

    WED

Ozito