1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
package monPackage;
import java.io.Serializable;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.DateTimeConverter;
/**
* Afficheur de dates pour JSF
*
*/
public class MyDateConverter extends DateTimeConverter implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
/**
* Constructeur
* <br>le format est dd/mm/yyyy
* <br>le fuseau horaire de référence est celui de Paris (CET=Central European Time)
*/
public MyDateConverter() {
super();
this.setPattern(ConstantsUtils.FORMAT_DATE_FRANCE);
this.setTimeZone(TimeZone.getTimeZone("Europe/Paris"));
}
/**
* Parsing
* <br>Si la saisie de la date est sur 2 chiffres, on considère que les années >50 sont en 1900
*/
public Object getAsObject(FacesContext context, UIComponent component, String chaine){
Date result = null;
Date inputDate = (Date)super.getAsObject(context, component, chaine);
if(inputDate != null){
Calendar cal = Calendar.getInstance();
cal.setTime(inputDate);
cal.setTimeZone(TimeZone.getTimeZone("Europe/Paris"));
int year = cal.get(Calendar.YEAR);
if(year < 100){
if(year>50){
cal.set(Calendar.YEAR, year+1900);
}else {
cal.set(Calendar.YEAR, year+2000);
}
}
result = cal.getTime();
}else {
result = inputDate;
}
return result;
}
} |