PDA

Visualizza la versione completa : [JAVA] Calcolo ultima domenica mese


gokoulele
18-10-2005, 12:48
ciao a tutti, qualcuno sa come posso calcolare l'ultima domenica(giorno numerico) del mese (ad esempio il mese di ottobre)?

io mi sono fermata a calcolare il giorno della settimana della data odierna e non so come continuare... :confused: :cry:


SimpleDateFormat dt = new SimpleDateFormat("E");
Calendar cal = Calendar.getInstance(Locale.ITALY);
java.util.Date date = cal.getTime();
String result=dt.format(date);
System.out.println (result);




grazie :ciauz:

Daria

Lucked
18-10-2005, 13:09
Così, calcola l'ultima domenica del mese corrente:


[CODE]import java.util.*;

class Ora{
public static void main(String[] args)
{

GregorianCalendar d = new GregorianCalendar();
d.set(Calendar.DAY_OF_MONTH, 22);
int giorno=0;
int month = d.get(Calendar.MONTH);
while(d.get(Calendar.MONTH) == month){
if(d.get(Calendar.DAY_OF_WEEK) == 1)
giorno = d.get(Calendar.DAY_OF_MONTH);
d.add(Calendar.DAY_OF_MONTH, 1);
}

System.out.println(giorno);
}
}

gokoulele
18-10-2005, 14:13
ciao

intanto grazie per la risposta :)

a me in realtà servivano espressamente le ultime domeniche di ottobre e marzo (cambiamento ora solare-legale)

io ho fatto così (vedi giu), magari poi si possono combinare i 2 codici per ottimizzarli, anche per i futuri bisognosi :)

ciao :ciauz:

SimpleDateFormat sdt = new SimpleDateFormat("E");
Date date=null;
SimpleDateFormat sdt1 = new SimpleDateFormat("yyyy-MM-dd");
String dateDomOttobre = "";
String dateDomMarzo = "";
try {
for (int i = 31; i>24; i--){

date = sdt1.parse("2005-03-"+Integer.toString(i));
System.out.println ("2005-03-"+Integer.toString(i)) ;
String result=sdt.format(date);
if(result.equals("dom"))
{
result+=" *";
dateDomMarzo = "2005-03-"+Integer.toString(i);
}
System.out.println (result);
}
}
catch (Exception ex) {
System.out.println (ex);
}
System.out.println ("");
System.out.println ("");
System.out.println ("");
System.out.println ("");
System.out.println ("");
try {
for (int i = 31; i>24; i--){

date = sdt1.parse("2005-10-"+Integer.toString(i));
System.out.println ("2005-10-"+Integer.toString(i)) ;
String result=sdt.format(date);
if(result.equals("dom"))
{
result+=" *";
dateDomOttobre = "2005-10-"+Integer.toString(i);
}
System.out.println (result);
}
}
catch (Exception ex) {
System.out.println (ex);
}

System.out.println ("");
System.out.println ("");
System.out.println ("");
System.out.println ("");
System.out.println ("");
System.out.println (dateDomOttobre);
System.out.println (dateDomMarzo);

gokoulele
18-10-2005, 14:23
ecco il codice ottimizzato per il mio utilizzo. Ringrazio nuovamente Lucked che mi ha risparmiato un bel pò di righe e fatica :)

ciao! :ciauz:

GregorianCalendar d = new GregorianCalendar();
d.set(Calendar.DAY_OF_MONTH, 22);
int giorno=0;
d.set(Calendar.MONTH, Calendar.MARCH);
int month =d.get(Calendar.MONTH);

while(d.get(Calendar.MONTH) == month){
if(d.get(Calendar.DAY_OF_WEEK) == 1)
giorno = d.get(Calendar.DAY_OF_MONTH);
d.add(Calendar.DAY_OF_MONTH, 1);
}

System.out.println(giorno);

giorno=0;
d.set(Calendar.MONTH, Calendar.OCTOBER);
month =d.get(Calendar.MONTH);

while(d.get(Calendar.MONTH) == month){
if(d.get(Calendar.DAY_OF_WEEK) == 1)
giorno = d.get(Calendar.DAY_OF_MONTH);
d.add(Calendar.DAY_OF_MONTH, 1);
}

System.out.println(giorno);

Lucked
18-10-2005, 21:40
di nulla :ciauz:

Lucked
18-10-2005, 21:57
cosi è ottimizzato:


import java.util.*;

class Ora{
public static void main(String[] args)
{
giornoMese(Calendar.MARCH);
giornoMese(Calendar.OCTOBER);
}

static void giornoMese(int mese){
GregorianCalendar d = new GregorianCalendar();
d.set(Calendar.DAY_OF_MONTH, 22);
d.set(Calendar.MONTH, mese);
int giorno=0;
int month = d.get(Calendar.MONTH);
while(d.get(Calendar.MONTH) == month){
if(d.get(Calendar.DAY_OF_WEEK) == 1)
giorno = d.get(Calendar.DAY_OF_MONTH);
d.add(Calendar.DAY_OF_MONTH, 1);
}
System.out.println(giorno);
}
}
:ciauz:

gokoulele
19-10-2005, 12:51
grandissimo :zizi:

un salutone :ciauz:

Loading