需求 java代码 比如10 点 到18点 五次分段 均匀分出五个时间段
import java.util.Date;
import java.text.SimpleDateFormat;
import java.text.ParseException;
public class HelloWorld {
public static void main(String []args) throws ParseException{
SimpleDateFormat simpleFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm");
Date fromDate3 = simpleFormat.parse("2019-03-21 10:00");
Date toDate3 = simpleFormat.parse("2019-03-21 18:00");
long from3 = fromDate3.getTime();
long to3 = toDate3.getTime();
int n = 5;
int span = (int)(to3 - from3) / n;
for (int i = 0; i <= n; i++)
{
Date afterDate = new Date(from3 + span * i);
System.out.println(afterDate.toString());
}
}
}
Thu Mar 21 10:00:00 UTC 2019
Thu Mar 21 11:36:00 UTC 2019
Thu Mar 21 13:12:00 UTC 2019
Thu Mar 21 14:48:00 UTC 2019
Thu Mar 21 16:24:00 UTC 2019
Thu Mar 21 18:00:00 UTC 2019
楼上给了日期类的分类方法,如果是纯字符串逻辑分类的话可以按照如下写法:
public class time {
public static void main(String[] args) {
List list = timeSeperator("05:20", "09:40", 4);
System.out.println(list);
}
//传参格式固定 HH:mm
private static List timeSeperator(String oldTime, String newTime, Integer section){
List<String> times=new ArrayList<>();
Integer oldHour=Integer.parseInt(oldTime.split(":")[0]);
Integer oldMinute=Integer.parseInt(oldTime.split(":")[1]);
Integer newHour=Integer.parseInt(newTime.split(":")[0]);
Integer newMinute=Integer.parseInt(newTime.split(":")[1]);
Integer Internal=(60*(newHour-oldHour)+(newMinute-oldMinute))/section;
times.add(oldTime);
for (Integer i = 1; i < section; i++) {
Integer temp=Internal*i;
Integer hour=temp/60+oldHour;
Integer minute=temp%60+oldMinute;
if (minute>=60){
minute-=60;
hour+=1;
}
String time=(hour>=10?hour:"0"+hour)+":"+(minute>=10?minute:"0"+minute);
times.add(time);
}
times.add(newTime);
return times;
}
}