2012-07-10 92 views
6

你好,我是新的android。如何獲取android中兩個日期之間的所有日期。在android中的兩個日期之間的genarate日期

例如。我有兩個字符串。
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));

這樣,我從第一和第二串兩個日期。

現在我還顯示這兩個日期之間的所有日期。任何人都可以幫助我找到這個。

+3

的可能重複[我怎樣才能以一天遞增日期在Java?](http://stackoverflow.com/questions/428918/how-can-i-increment-a-date-by-one-day-in-java) - 你可以在循環中運行增量來創建日期系列。 – assylias 2012-07-10 11:53:40

回答

24

最好不要在日期計算中使用任何硬編碼值。我們可以依賴於Java Calendar類的方法做這個任務

看到代碼

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

非常感謝你的工作夥伴。 – 2012-07-10 12:49:00

+0

很高興我能幫助你 – sunil 2012-07-10 13:22:48

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 2012-07-10 12:01:14

+0

感謝@assylias,現在我測試it.its更改「長ONE_DAY」後得到正確的結果 – 2012-07-10 12:07:26

+0

你好@Ramkiran謝謝你的回覆。但是我從'Date.parse(startDate);'得到了錯誤''它說java.util.Date.parse中的java.illegalArgumentException。 – 2012-07-10 12:16:15

相關問題