Domanda

Ho un programma che deve iniziare l'1 / 1/09 e quando inizio un nuovo giorno, il mio programma mostrerà il giorno successivo. Questo è quello che ho finora:

GregorianCalendar startDate = new GregorianCalendar(2009, Calendar.JANUARY, 1);
SimpleDateFormat sdf = new SimpleDateFormat("d/M/yyyy"); 
public void setStart()
{
    startDate.setLenient(false);
    System.out.println(sdf.format(startDate.getTime()));
}

public void today()
{
    newDay = startDate.add(5, 1);
    System.out.println(newDay);
//I want to add a day to the start day and when I start another new day, I want to add another day to that.
}

Ricevo l'errore trovato nullo ma previsto int, in 'newDay = startDate.add (5, 1);' Cosa devo fare?

È stato utile?

Soluzione

Il Calendar ha un oggetto aggiungi che consente di aggiungere o sottrarre valori di un campo specificato.

Ad esempio,

Calendar c = new GregorianCalendar(2009, Calendar.JANUARY, 1);
c.add(Calendar.DAY_OF_MONTH, 1);

Le costanti per specificare il campo sono disponibili nel " Riepilogo campo " del Calendar classe.

Solo per riferimento futuro, Le specifiche dell'API Java contengono molte informazioni utili su come utilizzare le classi che fanno parte dell'API Java.


Aggiornamento:

  

Ricevo l'errore trovato nullo ma   previsto int, in 'newDay =   startDate.add (5, 1); ' Cosa dovrei   fare?

Il metodo aggiungi non restituisce nulla, pertanto, il tentativo di assegnare il risultato della chiamata Calendar.add non è valido.

L'errore del compilatore indica che si sta tentando di assegnare un vuoto a una variabile con il tipo di int . Questo non è valido, in quanto non è possibile assegnare "niente". in una variabile int .

Solo un'ipotesi, ma forse questo potrebbe essere ciò che sta cercando di ottenere:

// Get a calendar which is set to a specified date.
Calendar calendar = new GregorianCalendar(2009, Calendar.JANUARY, 1);

// Get the current date representation of the calendar.
Date startDate = calendar.getTime();

// Increment the calendar's date by 1 day.
calendar.add(Calendar.DAY_OF_MONTH, 1);

// Get the current date representation of the calendar.
Date endDate = calendar.getTime();

System.out.println(startDate);
System.out.println(endDate);

Output:

Thu Jan 01 00:00:00 PST 2009
Fri Jan 02 00:00:00 PST 2009

Ciò che deve essere considerato è ciò che Calendar è in realtà.

Un Calendar non è una rappresentazione di una data. È una rappresentazione di un calendario e dove sta puntando. Al fine di ottenere una rappresentazione di dove punta il calendario al momento, si dovrebbe ottenere un Date dal Calendar utilizzando getTime .

Altri suggerimenti

Se puoi spostarlo in base alle tue esigenze, sposta tutte le tue necessità di data / ora su JODA, che è una libreria molto migliore, con il vantaggio aggiuntivo che quasi tutto è immutabile, il che significa che il multithreading è disponibile gratuitamente.

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