62,620
社区成员
发帖
与我相关
我的任务
分享
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
/**
*
* @date 11/01/2013
*/
public class TimeOutput {
public static void main(String[] args) {
System.out.println(new TimeOutput().from(7, 0).to(18, 0).minuteGap(10).output());
}
private static final DateFormat FORMAT = new SimpleDateFormat("HH:mm");
private static final long MILLISEC_PER_MINUTE = 60 * 1000L;
private final Calendar c = Calendar.getInstance();
private int hourFrom, hourTo;
private int minuteFrom, minuteTo;
private int minuteGap;
public List<String> output() {
List<String> output = new ArrayList<String>();
c.set(Calendar.HOUR_OF_DAY, hourFrom);
c.set(Calendar.MINUTE, minuteFrom);
long from = c.getTimeInMillis();
c.set(Calendar.HOUR_OF_DAY, hourTo);
c.set(Calendar.MINUTE, minuteTo);
long to = c.getTimeInMillis();
for(long gap = minuteGap * MILLISEC_PER_MINUTE; from <= to; from += gap)
output.add(FORMAT.format(new Date(from)));
return output;
}
public TimeOutput from(int hour, int minutes) {
check(hour, minutes);
this.hourFrom = hour;
this.minuteFrom = minutes;
return this;
}
public TimeOutput to(int hour, int minutes) {
check(hour, minutes);
this.hourTo = hour;
this.minuteTo = minutes;
return this;
}
public TimeOutput minuteGap(int gap) {
if( gap <= 0 )
throw new IllegalArgumentException("Invalid minute gap: " + gap);
this.minuteGap = gap;
return this;
}
private void check(int hour, int minutes) {
if( hour < 0 || hour > 24 )
throw new IllegalArgumentException("Invalid hour: " + hour);
if( minutes < 0 || minutes > 59)
throw new IllegalArgumentException("Invalid minutes: " + minutes);
}
}
import org.joda.time.LocalTime;
LocalTime start = new LocalTime(7,0,0);
LocalTime end = new LocalTime(18,0,0);
ArrayList<LocalTime> times = new ArrayList<>(72);
times.add(start);
for(LocalTime t = start.plusMinutes(10); t.isBefore(end); t = t.plusMinutes(10))
times.add(t);
times.add(end);