Question

J'ai un programme qui doit commencer le 1/1/09 et quand je commence une nouvelle journée, mon programme s'affiche le lendemain. C’est ce que j’ai jusqu’à présent:

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.
}

J'obtiens l'erreur trouvée vide mais attendue, dans 'newDay = startDate.add (5, 1);' Que dois-je faire?

Était-ce utile?

La solution

Le Agenda L'objet a add , méthode permettant d'ajouter ou de soustraire des valeurs d'un champ spécifié.

Par exemple,

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

Les constantes permettant de spécifier le champ se trouvent dans le "Résumé du champ". du Agenda classe.

Juste pour référence future, la spécification de l'API Java contient de nombreuses informations utiles sur l'utilisation des classes faisant partie de l'API Java.

Mise à jour:

  

J'obtiens l'erreur trouvée mais   int attendu, dans 'newDay =   startDate.add (5, 1); ' Que devrais-je   faire?

La méthode add ne renvoie rien. Par conséquent, essayer d'attribuer le résultat de l'appel de Calendar.add n'est pas valide.

L’erreur de compilation indique que l’on essaie d’attribuer un void à une variable du type int . Ce n'est pas valide, car on ne peut pas assigner "rien". à une variable int .

Juste une supposition, mais c'est peut-être ce que l'on essaie de faire:

// 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);

Sortie:

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

Ce qui doit être pris en compte est ce que Calendrier est réellement.

Un agenda ne représente pas une date. C'est une représentation d'un calendrier, et où il pointe actuellement. Pour obtenir une représentation de la position actuelle du calendrier, vous devez obtenir un Date à partir de Calendrier à l'aide de méthode getTime .

Autres conseils

Si vous pouvez vous en accommoder, déplacez votre date / heure vers JODA, qui est une bien meilleure bibliothèque, avec le bonus supplémentaire que presque tout est immuable, ce qui signifie que le multithreading est gratuit.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top