Ciao,
ho un problema con il get di un'orario da un DB INFORMIX. Gli orari su questo DB sono in UTC; per calcolarmi l'orario corretto devo fare
UTC + 1 in caso di ora solare
UTC + 2 in caso di ora legale
C'è un modo per sapere tramite codice java se siamo in ora legale o solare ?
Questo metodo secondo voi può andare bene ?
codice:
import java.util.*;
public class Prova5{
private static Calendar cal;
public static String oraLegale(){
cal=Calendar.getInstance();
String ora="Ora ";
int day=cal.get(Calendar.DAY_OF_MONTH );
int month=cal.get(Calendar.MONTH);
System.out.println("Day "+day +" month "+month +" Year "+cal.get(Calendar.YEAR));
if(month<Calendar.APRIL){
if(month==Calendar.MARCH && ultimaSettimana(month,day))
ora+=" Legale";
else ora+=" Solare";
}else if(month>Calendar.SEPTEMBER){
if(month==Calendar.OCTOBER && !ultimaSettimana(month,day))
ora+=" Legale";
else ora+=" Solare";
}else ora+=" Legale";
return ora;
}
public static boolean ultimaSettimana(int month,int day){
int d=day;
int day_week=cal.get(Calendar.DAY_OF_WEEK );
if(day_week==Calendar.SUNDAY && (d+7)>giorniMese(month))
return true;
else if(d>trovaDomenica(d,month,day_week)) return true;
return false;
}
public static int trovaDomenica(int d,int month,int day_week){
int dw=day_week;
for (int i=d;i<=giorniMese(month);i++){
if(dw>7) dw=1;
if(dw==Calendar.SUNDAY) {return i;}
dw++;
}
return -1;
}
public static int giorniMese(int month){
int a=cal.get(Calendar.YEAR);
int d=0;
switch(month){
case 0:case 2 :case 4 :case 6 :case 7 :case 9 :case 11 :d =31; break;
case 1: d= (a%4==0) ? 29:28;break;
default : d =30;
}//switch
return d;
}
public static void main(String []args){
System.out.println(oraLegale());
}
}
grazie