📄 yeariterator.java
字号:
package dark.timer;
import org.tiling.scheduling.ScheduleIterator;
import java.util.Calendar;
import java.util.Date;
/**
* A DailyIterator class returns a sequence of dates on subsequent days
* representing the same time each day.
*/
/**
* DailyIterator 实现了 ScheduleIterator,这是一个将 SchedulerTask 的计划执行时间
* 指定为一系列 java.util.Date 对象的接口。然后 next() 方法按时间先后顺序迭代 Date
* 对象。返回值 null 会使任务取消(即它再也不会运行)—— 这样的话,试图再次计划将会
* 抛出一个异常
* @author darkhe
*/
public class YearIterator implements ScheduleIterator
{
private final int day_of_year;
private final int hour_of_day;
private final int minute, second;
private final Calendar calendar = Calendar.getInstance();
public YearIterator(int day_of_year, int hour, int minute, int second)
{
this(day_of_year, hour, minute, second, new Date());
}
public YearIterator(
int day_of_year,
int hour_of_day,
int minute,
int second,
Date date)
{
this.day_of_year = day_of_year;
this.hour_of_day = hour_of_day;
this.minute = minute;
this.second = second;
calendar.setTime(date);
calendar.set(Calendar.DAY_OF_YEAR, day_of_year);
calendar.set(Calendar.HOUR_OF_DAY, hour_of_day);
calendar.set(Calendar.MINUTE, minute);
calendar.set(Calendar.SECOND, second);
calendar.set(Calendar.MILLISECOND, 0);
if (!calendar.getTime().before(date))
{
calendar.add(Calendar.YEAR, -1);
}
}
/**
* 返回表示每年同一时间的 Date 对象,
*/
public Date next()
{
calendar.add(Calendar.YEAR, 1);
return calendar.getTime();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -