2011-10-02 51 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