i18n + Data

Olá pessoal,

estou tentando fazer uma classe utilitária que receba uma string que representa uma data, o locale de origem da data e o locale de destino para a conversão da data. Este método deve retornar uma string também.

Tentei fazer com o código abaixo(vejam pelos comentários que tentei outras variações) mas ele me retorna uma data sem noção quando executa a conversão.

Este método deve ser capaz de transformar qq data de qq idioma para uma data válida em qq outro idioma.

Se alguém puder dar um help, por favor.

Segue a classe

/*

  • Created on 21/01/2005
    */
    package shit;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

/**
*

  • @author Administrador
    */
    public class Shit {

    public static String converterDataParaLocale(String data, Locale origem,
    Locale destino) throws ParseException {

     /*Calendar c1 = GregorianCalendar.getInstance(origem);
     Calendar c2 = GregorianCalendar.getInstance(destino);
     
     DateFormat dfo = SimpleDateFormat.getInstance();
     dfo.setCalendar(c1);
     DateFormat dfd = SimpleDateFormat.getInstance();
     dfd.setCalendar(c2);
     
     GregorianCalendar.getInstance().
     
     c1 */
     
     
     System.out.println("Utility respondendo");
     
     DateFormat fdo = SimpleDateFormat.getDateInstance(
             DateFormat.SHORT, origem);
     DateFormat fdd = SimpleDateFormat.getDateInstance(
             DateFormat.SHORT, destino);
     
     Date dataOrigem = null;
     Date dataDestino = null;
     
     System.out.println("Utility Antes do try 1");
    
     try {
         System.out.println("A data origem é null? "+data);
         dataOrigem = new Date(fdo.parse(data).getTime());
         //dataOrigem = dfo.parse(data);
     } catch (ParseException pe) {
         System.out.println("Utility Erro de parse 1");
         throw new ParseException("Parse error at position " 
                 + pe.getErrorOffset(), pe.getErrorOffset());
     } catch (Exception e) {
         System.out.println("Utility crash");
         e.printStackTrace();
     }
     System.out.println("Utility Antes do try 2");
     try {
         //dataDestino = new Date(fdd.parse(data).getTime());
         dataDestino = fdd.parse(data);
         //dataDestino = dfd.parse(data);
     } catch (ParseException pe) {
         System.out.println("Utility Erro de parse 2");
         pe.printStackTrace();
         throw new ParseException("Parse error at position " 
                 + pe.getErrorOffset(), pe.getErrorOffset());
     }
     System.out.println("Utility retornando " + fdd.format(dataDestino));
     //System.out.println("Utility retornando " + dfd.format(dataDestino));
     return fdd.format(dataDestino);
     //return dfd.format(dataDestino);
    

    }

    public static void main (String[] args) throws Exception {
    String shit = converterDataParaLocale(“17/08/2003”,
    new Locale(“pt”,“BR”),
    new Locale(“en”,“US”));
    System.out.println(shit);
    }

}