package com;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import org.junit.Test;
/*
*
* 将00:00:00~23:59:59时间段的所有时间转换为 288个 00:00:00 ~ 00:04:59, 00:05:00 ~ 00:09:59的时间段
*/
public class TheDayTo288 {
//转换为 2019-01-21 00:00:00的格式
private SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//测试类
@Test
public void dateFormat(){
Date dateToList = new Date();
//将时间放入到 List中
List<Date> result = dateToList(dateToList);
for (int i = 0; i < result.size(); i++) {
if(sdf1.format(result.get(i)).endsWith("00")){
System.out.println(sdf1.format(result.get(i))+"~"+sdf1.format(result.get(i+1)));
}
}
}
private List<Date> dateToList(Date dateToList) {
Date startDate = startDate(dateToList);
Date endDate = endDate(startDate);
List<Date> result = new ArrayList<>();
while(startDate.compareTo(endDate) < 0){
String dateStr = sdf1.format(startDate);
if(dateStr.endsWith("00")){
result.add(startDate);
startDate = add4MinuneAnd59Second(startDate,4,59);
}
if(dateStr.endsWith("59")){
result.add(startDate);
Date startDate1 = addOneSecond(startDate);
startDate = startDate1;
}
}
return result;
}
//加一秒
private Date addOneSecond(Date startDate) {
Calendar c = Calendar.getInstance();
c.setTime(startDate);
//加一秒
c.add(Calendar.SECOND, 1);
return c.getTime();
}
//添加4分59秒
private Date add4MinuneAnd59Second(Date startDate, int minune, int second) {
Calendar c = Calendar.getInstance();
c.setTime(startDate);
//加4分钟
c.add(Calendar.MINUTE, minune);
//加59秒
c.add(Calendar.SECOND, second);
return c.getTime();
}
//获取次日凌晨的时间
private Date endDate(Date startDate) {
Calendar c = Calendar.getInstance();
c.setTime(startDate);
//下一天
c.add(Calendar.DATE, 1);
return c.getTime();
}
//获取当天凌晨的时间
private Date startDate(Date dateToList) {
Calendar c = Calendar.getInstance();
c.setTime(dateToList);
//24 小时
c.set(Calendar.HOUR_OF_DAY, 0);
//分钟
c.set(Calendar.MINUTE,0);
//秒
c.set(Calendar.SECOND,0);
//毫秒
c.set(Calendar.MILLISECOND,0);
return c.getTime();
}
}