【问题标题】:How to do processing for a range of dates which are within the upper and lower limit set by 2 date variables如何处理由 2 个日期变量设置的上限和下限范围内的日期范围
【发布时间】:2011-10-02 06:38:04
【问题描述】:

我在 java 桌面应用程序中的不同日期变量中有 2 个日期。现在我想创建一个循环,对这两个日期中的每个日期进行一些处理。 (不包括日期=日期上限的情况,但包括日期=日期下限的情况)。

我确实了解java中日期的基本用法,我只是想知道,有没有简单的方法可以循环遍历这两个日期之间的所有日期,然后对每个日期进行一些处理?

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

【问题讨论】:

    标签: java date


    【解决方案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);
            }
        }
    }
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-07
    • 1970-01-01
    • 2011-07-17
    • 1970-01-01
    • 2010-10-10
    • 1970-01-01
    • 2011-08-10
    • 2019-10-03
    相关资源
    最近更新 更多