2011-10-02 115 views
2

我在我的Java桌面应用程序中使用了不同日期变量中的2个日期。现在我想创建一个循环,为这两个日期中的每个日期做一些处理。 (不包括情况,其中日期=日期的上限值,但包括情况,其中日期=日期的下限值)。如何处理由2个日期变量设置的上限和下限范围内的日期范围

我明白在java中日期的基本用法,我只是想知道,有没有简单的方法来循环这两个日期之间的所有日期,然后为每个日期做一些处理?

与日期相关的另一个问题 - 我如何只获取java中的当前系统日期以及日期变量的年份部分(为了获取日期的年份部分,是否必须将日期的整个值变量转换成字符串变量,然后提取表示年份,相关部分)

回答

1

这里有一个例子:http://helpdesk.objects.com.au/java/how-can-i-iterate-through-all-dates-in-a-range

import java.util.ArrayList; 
import java.util.Calendar; 
import java.util.Date; 
import java.util.Iterator; 
import java.util.Map; 

public class DateIterator 
    implements Iterator<Date>, Iterable<Date> 
{ 

    private Calendar end = Calendar.getInstance(); 
    private Calendar current = Calendar.getInstance(); 

    public DateIterator(Date start, Date end) 
    { 
     this.end.setTime(end); 
     this.end.add(Calendar.DATE, -1); 
     this.current.setTime(start); 
     this.current.add(Calendar.DATE, -1); 
    } 

    public boolean hasNext() 
    { 
     return !current.after(end); 
    } 

    public Date next() 
    { 
     current.add(Calendar.DATE, 1); 
     return current.getTime(); 
    } 

    public void remove() 
    { 
     throw new UnsupportedOperationException(
      "Cannot remove"); 
    } 

    public Iterator<Date> iterator() 
    { 
     return this; 
    } 

    public static void main(String[] args) 
    { 
     Date d1 = new Date(); 
     Calendar cal = Calendar.getInstance(); 
     cal.add(Calendar.DATE, 22); 
     Date d2 = cal.getTime(); 

     Iterator<Date> i = new DateIterator(d1, d2); 
     while(i.hasNext()) 
     { 
      Date date = i.next(); 
      System.out.println(date); 
     } 
    } 
} 
+1

PLS添加链接:http://helpdesk.objects.com.au/java/how -can-i-iterate-through-all-dates-in-a-range –

+0

@ Cris-谢谢,你的代码是一个不错的日期解析方法... – user974573

+0

已经在指定的链接中找到了这个...我太懒了,再次写我自己:) – Cris