2012-07-10 104 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

相关问题