io per tutte le operazioni con le date uso questa classettina fatta da me...
codice:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.StringTokenizer;
import java.util.Calendar;
import java.util.TimeZone;
public class DateHelper{
// DEFINISCO PROPRIETA'
private static String format = "dd/MM/yyyy HH:mm:ss";
private static String simpleFormat = "dd/MM/yyyy";
private static String bakFormat = "yyyy/MM/dd HH:mm:ss";
// CONVERSIONE FORMATO DATA --> STRINGA
public String dateToString(Date date, String format) {
SimpleDateFormat formatter = new SimpleDateFormat(format);
return formatter.format(date);
}
// CONVERSIONE FORMATO STRINGA --> DATA
public Date stringToDate(String date, String format) {
SimpleDateFormat formatter = new SimpleDateFormat(format);
Date dataConvertita = null;
try {
dataConvertita = formatter.parse(date);
}
catch (ParseException e) {
System.out.println("ERRORE stringToDate");
}
return dataConvertita;
}
// FUNZIONE PER CONVERSIONE DELLA DATA ( non usata )
public String usrToDbf(String dataUsr, String divisore){
int i;
StringTokenizer st = new StringTokenizer(dataUsr,divisore);
String [] stringheSplittate = new String[st.countTokens()];
i = 0;
while (st.hasMoreTokens()) {
stringheSplittate[i] = st.nextToken();
i++;
}
if (stringheSplittate[0].length() == 1){
stringheSplittate[0] = "0" + stringheSplittate[0];
}
if (stringheSplittate[1].length() == 1){
stringheSplittate[1] = "0" + stringheSplittate[1];
}
String giorno = stringheSplittate[0];
String mese = stringheSplittate[1];
String anno = stringheSplittate[2];
return anno+mese+giorno;
}
// FUNZIONE PER LA CONVERSIONE DELLA DATA
public String formatDate(String date, String from, String to) {
try{
SimpleDateFormat sdf = new SimpleDateFormat(from);
Date d = sdf.parse(date);
sdf = new SimpleDateFormat(to);
return sdf.format(d);
}catch(Exception e){
return "";
}
}
// FUNZIONE PER CALCOLO DIFFERENZA TRA DUE DATE
public int giorniDifferenza(String sdate1, String sdate2, String fmt, TimeZone tz){
SimpleDateFormat df = new SimpleDateFormat(fmt);
Date date1 = null;
Date date2 = null;
try {
date1 = df.parse(sdate1);
date2 = df.parse(sdate2);
}catch (ParseException pe){
pe.printStackTrace();
}
Calendar cal1 = null;
Calendar cal2 = null;
if (tz == null){
cal1=Calendar.getInstance();
cal2=Calendar.getInstance();
}else{
cal1=Calendar.getInstance(tz);
cal2=Calendar.getInstance(tz);
}
// different date might have different offset
cal1.setTime(date1);
long ldate1 = date1.getTime() + cal1.get(Calendar.ZONE_OFFSET) + cal1.get(Calendar.DST_OFFSET);
cal2.setTime(date2);
long ldate2 = date2.getTime() + cal2.get(Calendar.ZONE_OFFSET) + cal2.get(Calendar.DST_OFFSET);
// Use integer calculation, truncate the decimals
int hr1 = (int)(ldate1/3600000); //60*60*1000
int hr2 = (int)(ldate2/3600000);
int days1 = (int)hr1/24;
int days2 = (int)hr2/24;
int dateDiff = days2 - days1;
int weekOffset = (cal2.get(Calendar.DAY_OF_WEEK) - cal1.get(Calendar.DAY_OF_WEEK))<0 ? 1 : 0;
int weekDiff = dateDiff/7 + weekOffset;
int yearDiff = cal2.get(Calendar.YEAR) - cal1.get(Calendar.YEAR);
int monthDiff = yearDiff * 12 + cal2.get(Calendar.MONTH) - cal1.get(Calendar.MONTH);
// RITORNA DIFFERENZA DATE
return dateDiff;
}
// FUNZIONE PER AGGIUNGERE / TOGLIERE DEI GIORNI AD UNA DATA
public String addDay(String date,int dayToAdd){
String dataNew = "";
String DATE_FORMAT = "yyyyMMdd";
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
try{
Calendar c1 = Calendar.getInstance();
int anno = Integer.parseInt(date.substring(0,4));
int mese = Integer.parseInt(date.substring(4,6))-1;
int giorno = Integer.parseInt(date.substring(6,8));
c1.set(anno, mese, giorno);
c1.add(Calendar.DATE,dayToAdd);
dataNew = sdf.format(c1.getTime());
}catch (Exception e){
e.printStackTrace();
}
// RITORNA DIFFERENZA DATE
return dataNew;
}
}