2012-07-10 12 views
6

Hallo, ich bin neu in Android. Wie man alle Daten zwischen zwei Daten in Android erhält.genarate Daten zwischen zwei Datum in Android

Zum Beispiel. Ich habe zwei Saiten.
String first="2012-07-15";
String second="2012-07-21";

ich konvertiere und aus diesen Saiten Daten erhalten.

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

So kann ich von beiden Termine erhalte ersten und zweiten String.

Jetzt zeige ich auch alle Daten zwischen diesen beiden Daten an. Kann mir jemand helfen, das zu finden?

+3

möglich Duplikat [Wie kann ich ein Datum um einen Tag erhöht in Java?] (http://stackoverflow.com/questions/428918/how-can-i-increment-a-date-by-on-day-in-java) - Sie können das Inkrement in einer Schleife ausführen, um zu erstellen die Datumsreihe. – assylias

Antwort

24

es ist besser, keine hardcoded Werte in Datumsberechnungen zu verwenden. wir können auf Java Calendar Klasse Methoden verlassen, um diese Aufgabe zu tun

sehen den 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; 
} 

und es verwenden, wie unten

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

Vielen Dank Kumpel seine Arbeit. –

+0

glücklich, dass ich dir helfen könnte – 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

Das Hinzufügen von Millisekunden zu Ihrem Datum birgt ein hohes Risiko von Ausfällen aufgrund von Sommerzeit und anderen seltsamen Zeitzonenänderungen. – assylias

+0

danke @assylias, jetzt habe ich es getestet.Es wird das richtige Ergebnis nach der Änderung "Long ONE_DAY" –

+0

Hallo @Ramkiran danke für die Antwort. Aber ich habe einen Fehler bei 'long von = Date.parse (startDate);' was besagt, dass java.illegalArgumentException bei java.util.Date.parse. –

Verwandte Themen