2012-07-10 13 views
6

こんにちは、私はアンドロイドで新しいです。どのようにアンドロイドで2つの日付の間にすべての日付を取得する。genarate日付はandroidの2日付の間です

たとえば、私は2つの弦を持っています。
String first="2012-07-15";
String second="2012-07-21";

私は変換し、この文字列から日付を取得します。

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

私は最初と2番目の文字列から両方の日付を取得するこの方法です。

この2つの日付の間にすべての日付も表示されます。誰でも私がこれを見つけるのを助けることができます。

+3

可能重複以下のようにそれを使用するを参照してください。このタスクを実行するためにJava Calendarクラスメソッドに頼ることができますJavaで?](http://stackoverflow.com/questions/428918/how-can-i-increment-a-date-by-one-day-in-java) - ループ内でインクリメントを実行すると、作成することができます日付シリーズ。 – assylias

答えて

24

日付計算でハードコードされた値を使用しない方が良いです。我々は

コード

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

と、[どのように私は一日で日付をインクリメントすることができるの

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

ありがとうございました。 –

+0

私はあなたを助けることができて幸せ – 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

日付にミリ秒を追加すると、夏時間やその他の奇妙なタイムゾーンの変更により、失敗する危険性が高くなります。 – assylias

+0

ありがとう@assylias、今私はit.its "長いONE_DAY"を変更した後に正しい結果を得ることをテストしました –

+0

こんにちは@Ramkiran返信ありがとうございます。しかし、私は 'long from = Date.parse(startDate);でエラーを受け取りました。これは、java.util.Date.parseのjava.illegalArgumentExceptionを示しています。 –

関連する問題