Domanda

Ok, voglio fare in modo che il mio programma stampi la data: 1/1/2009

Ma questo è ciò che stampa:

Gio 01 gen 00:00:00 EST 2009

Da questo codice

GregorianCalendar startDate = new GregorianCalendar(2009, Calendar.JANUARY, 1);
public void setStart()
{
    startDate.setLenient(false);
    Date date = new Date(startDate.getTimeInMillis());
    System.out.println(date);
}

Come posso cambiarlo in modo che venga stampato solo l'1 / 1/2009?

È stato utile?

Soluzione

Usa SimpleDateFormat :

GregorianCalendar startDate = new GregorianCalendar(2009, Calendar.JANUARY, 1);
public void setStart() {
  startDate.setLenient(false); 
  DateFormat df = new SimpleDateFormat("d/M/yyyy");
  df.format(startDate.getDate());
}

Stai implicitamente chiamando il metodo toString () che sta (correttamente) stampando il contenuto completo.

A proposito, non è necessario costruire una data come stai facendo. La chiamata di getDate () su un Calendar restituisce un oggetto Date .

Altri suggerimenti

Attualmente, il Il metodo Date.toString () viene chiamato per visualizzare la rappresentazione String della GregorianCalendar .

Ciò che deve essere fatto è creare un DateFormat che produrrà una rappresentazione String desiderata. L'oggetto DateFormat può essere utilizzato per formattare un'istanza Date sulla formattazione desiderata utilizzando metodo format .

Il modo più semplice per ottenere ciò che si desidera è utilizzare SimpleDateFormat , che ha una costruttore che accetta una stringa di formato per generare la Date nella forma desiderata.

Calendar calendar = new GregorianCalendar(2009, Calendar.JANUARY, 1);
DateFormat df = new SimpleDateFormat("M/d/yyyy");
System.out.println(df.format(calendar.getTime()));

Output

1/1/2009
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top