Olen saanut alla olevalla koodilla tulostumaan tämän päivän(2004-08-03), mutta miten koodia olisi muutettava, jotta saisin siitä irti eilisen päivämäärän (2004-08-03).
Tarvitsen useampia päivämääriä applettini tekstikenttiin.
java.util.Date today =
new java.util.Date();
java.sql.Date sqlToday =
new java.sql.Date(today.getTime());
jTextField2.setText("" sqlToday);
Tarvitsen useampia päivämääriä applettini tekstikenttiin.
java.util.Date today =
new java.util.Date();
java.sql.Date sqlToday =
new java.sql.Date(today.getTime());
jTextField2.setText("" sqlToday);
Vastaukset 12
Vanhimmat
http://www.experts-exchange.com/Programming/Programming_Languages/Java/Q_20950628.html
Tuolta taitaa löytyä ratkaisu. Sun pitää käyttää nyt Javan calender-luokkaa apuna.
Tuo sivuhan on maksullinen. En viitsisi maksaa tällaisen ongelmanratkaisusta, kun ratkaisu on kuitenkin hyvin yksinkertainen(luulisin). :)
Eli tällä koodilla saan myös tämän päivän päivämäärän, mutta pitäisi saada myös eilisen päivämäärä.
java.sql.Date date = new java.sql.Date((new GregorianCalendar()).getTime().getTime());
Ei tuon linkin klikkaaminen mitään maksa ;D
Et sitten jaksanut skrollata sivua yhtään alaspäin mistä vastauskin löytyy...?
löytyy varmasti metodiu, jolla voi päivämääriä laskea.
Tällä hetkellä sulla on siis jo koodi millä saat tämän päivän, niin oisko tästä apua?
Calendar calendar = new GregorianCalendar();
calendar.setTime(new Date()); //nykyhetki
Sitten luetaan APIsta joku metodi:
void roll(int field, int amount)
Roll a field by a signed amount.
calendar.roll(DAY_OF_MONTH, -1);
System.out.println(calendar.get(Calendar.DAY_OF_MONTH) "." calendar.get(Calendar.MONTH) "." calendar.get(Calendar.YEAR));
Muut int-tyyppiset kentät löytyy Calendar-luokasta (siis noi jotka on isolla).
Mitäs jos nykyhetki on vaikka 1.8.2004. Antaako tuo tapa sitten eiliseksi päiväksi 0.8.2004 ?
Tuo tapa ei anna mitään muuta kuin tämän päivän.
Niin ja se aiemmin annettu sivu ei ratkaisua tarjonnut.
Tässä on kaikki koodit mitä olen yrittänyt:
1.
[code]
java.sql.Date date =
new java.sql.Date((new GregorianCalendar()).getTime().getTime());
jTextField2.setText("" date);
[/code]
2.
[code]
Calendar cal = GregorianCalendar.getInstance();
DateFormat fmt = DateFormat.getInstance();
String buf = fmt.format(cal.getTime());
jTextField2.setText("" buf);
[/code]
3. [code]
java.util.Date today =
new java.util.Date();
java.sql.Date sqlToday =
new java.sql.Date(today.getTime() 1);
jTextField2.setText("" sqlToday);
[/code]
Eli jos joku neuvoisi miten jotain yllä olevaa koodin pätkää tulisi muokata, että saisin "tulokseksi" eilisen päivän.
calendar.add(GregorianCalendar.DAY_OF_MONTH, -1);
System.out.println("eilinen päivä: " format.format(calendar.getTime()));
Vastaus löytyy täältä jo, ja löytyy se myös sen linkin takaa minkä jo kerran heitin.
Jos haluat eilisen päivän, sun tuskin pitää lisätä nykyiseen päivään mitään, kuten tossa kolmosesimerkissä on. Ekalla ja tokalla esimerkillä saat vain nykyisen päivän.
Alla on pätkä mikä ainakin toimii...
import java.util.Date;
import java.util.Calendar;
public class DateTest extends Object
{
public static void main( String[] args ) {
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
int day = cal.get(Calendar.DATE);
cal.add(Calendar.DAY_OF_MONTH, -1);
System.out.println("Eilen oli " cal.getTime());
}
}
Jos muuten haet tällä ratkaisua kysymykseen jonka lähetit Tietokanta-palstalle, tämä on _todella_ huono tapa ratkaista ongelma, ja varmasti tuottaa vaikeuksia myöhemmin.
osaa laskea kalenteria. Eli sitten aika muuttuisi edelliseksi kuukaudeksi.
Saattoi kyllä olla niinkin, että joku noista ajoista alkoi nollasta. Äkkiäkö sen tarkistaa.
Jos roll ei toimi, niin sitten add-metodilla lisää -1 päivään ja sitten tulostaa.
Testasin sekä add- että roll-metodeilla ja tässä tulokset:
Molemmilla tulee eilinen päivä ihan ok.
Date today = new java.util.Date();
Calendar kalenteri = new GregorianCalendar();
kalenteri.setTime(today);
System.out.println(kalenteri.get(Calendar.DAY_OF_MONTH));
kalenteri.add(Calendar.DAY_OF_MONTH, -1);
System.out.println(kalenteri.get(Calendar.DAY_OF_MONTH));
Ja tänään ruudulle tulostuu 4 ja seuraavalle riville 3
No nyt toimii :)