2010-11-07 5 views
0
import java.util.*;  
import java.text.*; 

public class GetPreviousAndNextDate 
{ 
    public static void main(String[] args) 
    {  
     int MILLIS_IN_DAY = 1000 * 60 * 60 * 24;  
     Date date = new Date();  
     SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yy"); 
     String prevDate = dateFormat.format(date.getTime() - MILLIS_IN_DAY); 
     String currDate = dateFormat.format(date.getTime()); 
     String nextDate = dateFormat.format(date.getTime() + MILLIS_IN_DAY); 

     System.out.println("Previous date: " + prevDate); 
     System.out.println("Currnent date: " + currDate); 
     System.out.println("Next date: " + nextDate); 
    } 
} 

j'ai cette erreurMéthode erreur non trouvée dans SimpleDateFormat

(Error(9,32): method format(long) not found in class java.text.SimpleDateFormat) 

Répondre

1

Afin de créer une date d'une longue il vous suffit d'utiliser les new Date(long) API:

new Date(date.getTime() - MILLIS_IN_DAY); 
0

Ces lignes utilisent une méthode qui n'existe pas:

String prevDate = dateFormat.format(date.getTime() - MILLIS_IN_DAY); 

String currDate = dateFormat.format(date.getTime()); 

String nextDate = dateFormat.format(date.getTime() + MILLIS_IN_DAY); 

La méthode format accepte les objets Date en tant que paramètres.

Essayez ceci:

String prevDate = dateFormat.format(new Date(date.getTime() - MILLIS_IN_DAY)); 
2

logique de votre code est erroné. Les résultats seront décalés d'une heure autour de l'heure avancée, car cela implique des jours de 23 ou 25 heures.

Pour la date Arithmétique, vous devez toujours utiliser la classe Calendrier:

Calendar cal = Calendar.getInstance(); 
    cal.add(Calendar.DAY_OF_MONTH, -1); 
    String prevDate = dateFormat.format(cal.getTime()); 
    cal.add(Calendar.DAY_OF_MONTH, 2); 
    String nextDate = dateFormat.format(cal.getTime()); 

(notez que Calendar.getTime() retourne un objet Date et fixe ainsi l'erreur de type aussi bien)

Questions connexes