import org.junit.Test;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class LimitNOTest {
@Test
public void limitno() throws Exception {
String endDate = "2019-07-08";
getLimitNO(endDate, getRuleNO(endDate));
}
private String[] arrays0 = {"不限行", "5和0", "1和6", "2和7", "3和8", "4和9", "不限行"};
private String[] arrays1 = {"不限行", "4和9", "5和0", "1和6", "2和7", "3和8", "不限行"};
private String[] arrays2 = {"不限行", "3和8", "4和9", "5和0", "1和6", "2和7", "不限行"};
private String[] arrays3 = {"不限行", "2和7", "3和8", "4和9", "5和0", "1和6", "不限行"};
private SimpleDateFormat formatdate = new SimpleDateFormat("yyyy-MM-dd");
//获取某日所在的限行规则编号0-3
private int getRuleNO(String endDate) {
String startDate = "2019-04-08";
int ruleno = 0;
try {
Date date1 = formatdate.parse(startDate);
Date date2 = formatdate.parse(endDate);
int diffweek = (int) Math.ceil((float) (date2.getTime() - date1.getTime() + 1000 * 60 * 60 * 24) / (1000 * 60 * 60 * 24 * 7));
int i = (int) diffweek % 52;
if (i == 0) {
return ruleno;
}
ruleno = (int) Math.floor((float) i / 13);
if (i % 13 == 0) {
ruleno--;
}
System.out.println("-------------------------------------------");
System.out.printf("diffweek:%d\ni:%d\nruleno:%d\n", diffweek, i, ruleno);
} catch (ParseException e) {
e.printStackTrace();
}
return ruleno;
}
//获取某日期的限行编号
private String getLimitNO(String someDate, int ruleno) {
String limitNO = "";
int dayno = 0;
try {
Date date = formatdate.parse(someDate);
Calendar c = Calendar.getInstance();
c.setTime(date);
dayno = c.get(Calendar.DAY_OF_WEEK) - 1;
switch (ruleno) {
case 0:
limitNO = arrays0[dayno];
break;
case 1:
limitNO = arrays1[dayno];
break;
case 2:
limitNO = arrays2[dayno];
break;
case 3:
limitNO = arrays3[dayno];
break;
default:
break;
}
} catch (ParseException e) {
e.printStackTrace();
}
System.out.printf("someDate:%s\nruleno:%d\nlimitNO:%s\ndayno:%d\n", someDate, ruleno, limitNO, dayno);
return limitNO;
}
}