per come la vedo io basterebbe qualcosa del genere:
codice:
public class MyDate{
private Date data;
private String pattern = DEFAULT_PATTERN;
public MyDate(String data){
super();
this.data = parse(data, this.getPattern());
}
public MyDate(String data, String pattern){
super();
this.pattern = pattern;
this.data = parse(data, this.getPattern());
}
private Date parse(String data, String pattern){
Date d = null;
try{
d = DateUtils.parse(data, pattern);
}catch(Exception e){}
return d;
}
public String toString(){
return this.date.toString();
}
}
public class DateUtils{
public static Date parse(String data, String pattern){
[...]
}
public static String parse(String data, String pattern){
[...]
}
}
La classe DateUtils dovrebbe fornire metodi statici per la formattazione, dando una maggiore "astrazione" rispetto a ..DateFormat e centralizzando l'operazione.
La classe MyDate non ha la necessità di estendere Date .. semplicemente potrebbe dichiararne una.
Il pattern potrebbe essere impostato come default e potrebbero esserci metodi per settarlo successivamente a seconda delle esigenze.
Sarebbe carino definire i pattern come proprietà statiche su DateUtils, così da avere riferimenti più chiari e centralizzare del tutto la gestione delle date.
Sovrascrivendo il toString() potresti gia tornare la data parserizzata nel formato stringa.
Le eccezioni gestiscile come meglio credi, io ho implementato solo un try-catch "simbolico".
ps: il codice l'ho proprio buttato giù in modo sbrigativo, scusa ev. errori.Tra Date e Calendar è meglio Calendar, ma se non devi fare utilizzi particolari...ti puoi accontentare ancora per qualche versione di Date