2012-07-10 1 views
6

Bonjour je suis nouveau dans android. Comment obtenir toutes les dates entre deux dates dans Android.dates genarate entre deux date dans android

Par exemple. J'ai deux cordes.
String first="2012-07-15";
String second="2012-07-21";

je convertir et obtenir les dates de ces chaînes.

DateFormat df1 = new SimpleDateFormat("yyyy-MM-dd");
DateFormat df2 = new SimpleDateFormat("MMM dd");
String mydate = df2.format(df1 .parse(first));

De cette façon, je reçois les deux dates de la première et la deuxième chaîne.

Maintenant, j'affiche également toutes les dates entre ces deux dates. Quelqu'un peut-il m'aider à trouver cela?

+3

double possible de [Comment puis-je augmenter une date d'un jour en Java?] (http://stackoverflow.com/questions/428918/how-can-i-increment-a-date-by-one-day-in-java) - Vous pouvez lancer l'incrément dans une boucle pour créer la série de dates. – assylias

Répondre

24

Il est préférable de ne pas utiliser de valeurs codées en dur dans les calculs de date. nous pouvons compter sur les méthodes de classe java Calendar pour effectuer cette tâche

voir le code

private static List<Date> getDates(String dateString1, String dateString2) 
{ 
    ArrayList<Date> dates = new ArrayList<Date>(); 
    DateFormat df1 = new SimpleDateFormat("yyyy-MM-dd"); 

    Date date1 = null; 
    Date date2 = null; 

    try { 
     date1 = df1 .parse(dateString1); 
     date2 = df1 .parse(dateString2); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 

    Calendar cal1 = Calendar.getInstance(); 
    cal1.setTime(date1); 


    Calendar cal2 = Calendar.getInstance(); 
    cal2.setTime(date2); 

    while(!cal1.after(cal2)) 
    { 
     dates.add(cal1.getTime()); 
     cal1.add(Calendar.DATE, 1); 
    } 
    return dates; 
} 

et l'utiliser comme ci-dessous

List<Date> dates = getDates("2012-02-01", "2012-03-01"); 
    for(Date date:dates) 
     System.out.println(date); 
+0

Merci beaucoup mon pote son travail. –

+0

heureux que je puisse vous aider – sunil

1
public class DummyWorks extends Activity 
{ 
static final long ONE_DAY = 24 * 60 * 60 * 1000L; 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    getDatesBetween("03/23/2011","03/28/2011"); 
} 

public static void getDatesBetween(String startDate,String endDate) { 


    long from=Date.parse(startDate); 

    long to=Date.parse(endDate); 

    int x=0; 

    while(from <= to) { 
      x=x+1; 
      System.out.println ("Dates : "+new Date(from)); 
      from += ONE_DAY; 
    } 
    System.out.println ("No of Dates :"+ x); 


} 
} 
+0

L'ajout de millisecondes à votre date entraîne un risque élevé d'échec en raison de l'heure d'été et d'autres changements de fuseau horaire étranges. – assylias

+0

merci @assylias, maintenant je l'ai testé.son résultat correct après avoir changé "long ONE_DAY" –

+0

bonjour @Ramkiran merci pour la réponse. Mais j'ai eu une erreur à 'long de = Date.parse (startDate);' qui dit que java.illegalArgumentException à java.util.Date.parse. –