PDA

View Full Version : [JAVA] classe java.sql.Date Mi serve la data di ieri!!!


fbcyborg
20-07-2005, 11:58
Ciao!
per motivi che adesso non sto a spiegare mi serve un sistema, che data la data di oggi, mi restituisca un nuovo oggetto Date con la data di ieri.

del tipo: Date d = new Date();
Date ieri = d.getDataDiIeri();

GRAZIE!

franksisca
20-07-2005, 14:15
Fai un metodo che riceve l'oggetto data e ne restituisce un altro. Questo metodo restituisce la data di ieri, diminuendo il giorno di 1, e se uguale a 1 fai i controlli sul mese ed eventualmente anche sull'anno, e poi crei una nuova data passandogli i parametri giusti.
Credo che sia chiaro?!? ;)

kingv
20-07-2005, 14:37
Calendar ieri = new GregorianCalendar(2005, Calendar.JULY, 19);
Date date = ieri.getTime();

fbcyborg
20-07-2005, 14:42
franksisca: ci sono problemi con anni bisestili... o cmq quando un mese ha 30 giorni... se sono al 1° febbraio, che faccio? 1-1???? fa 30? o fa 31?

kingv stai scherzando o stai dicendo sul serio?

kingv
20-07-2005, 14:44
kingv stai scherzando o stai dicendo sul serio?


ti ho indicato le classi da usare, logicamente penso che tu voglia rendere parametrico il tutto:



public Date dataDiIeri(Date oggi)
{
Calendar ieri = new GregorianCalendar(oggi.getYear(), oggi.getMonth(), oggi.getDay());
ieri.add(Calendar.DATE, -1)

return ieri.getTime();
}

fbcyborg
20-07-2005, 14:53
OK, grazie, ma non mi funziona molto bene! ieri era 19...

import java.util.*;

public class DataIeri{

public static void main(String[] args){
Date d = new Date();
Date ieri = dataDiIeri(d);
System.out.println(ieri);
}

public static Date dataDiIeri(Date oggi)
{
Calendar ieri = new GregorianCalendar(oggi.getYear(), oggi.getMonth(), oggi.getDay());
ieri.add(Calendar.DATE, -1);

return ieri.getTime();
}

}


ciaociao

fbcyborg
20-07-2005, 14:59
Guarda, alla fine ho trovato 3 righe di codice che risolvono il problema sebbene sia deprecato qualcosa..


long aDay = 1000 * 60 * 60 * 24;
long now = System.currentTimeMillis();
Date yesterday = new Date(now - aDay);

kingv
20-07-2005, 15:07
scusa non avevo provato quello che ti ho postato, ora dovrebbe essere ok:

public class DataIeri{

public static void main(String[] args){
Date d = new Date();
Date ieri = dataDiIeri(d);
System.out.println(ieri);
}

public static Date dataDiIeri(Date oggi)
{
Calendar ieri = new GregorianCalendar();
ieri.setTime(oggi);
ieri.add(Calendar.DATE, -1);

return ieri.getTime();
}

}

fbcyborg
20-07-2005, 15:17
Grazie mille fratello

sblantipodi
20-07-2005, 15:35
Guarda, alla fine ho trovato 3 righe di codice che risolvono il problema sebbene sia deprecato qualcosa..


long aDay = 1000 * 60 * 60 * 24;
long now = System.currentTimeMillis();
Date yesterday = new Date(now - aDay);


In questo modo la var aDay conterrą un intero giorno espresso in millisecondi.
Non mi sembra una soluzione molto elegante :P

fbcyborg
20-07-2005, 15:57
Proovalo!!!! :D

import java.util.*;

public class DataIeri{

public static void main(String[] args){

long aDay = 1000 * 60 * 60 * 24;
long now = System.currentTimeMillis();
Date yesterday = new Date(now - aDay);

System.out.println(yesterday);
}
}


Funziooona!!!

sblantipodi
20-07-2005, 17:06
Proovalo!!!! :D

import java.util.*;

public class DataIeri{

public static void main(String[] args){

long aDay = 1000 * 60 * 60 * 24;
long now = System.currentTimeMillis();
Date yesterday = new Date(now - aDay);

System.out.println(yesterday);
}
}


Funziooona!!!

lo so che funziona :)
dicevo solo che era una soluzione poco elegante :P