*需求:旬末,计算本旬数据,月末,计算本月数据,年末,计算本年数据。
*例如:2019年5月31日,将计算本旬数据,本月数据。
*2019年12月31日,将计算,本日,本旬,本月,本年数据。
// 日期格式化
public final static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入日期:");
System.out.println("退出请输入:“-退出”");
while (true) {
String countStr = sc.nextLine();
if (!"".equals(countStr) && countStr.equals("-退出")) {
System.out.println("程序已退出!");
break;
}else if("".equals(countStr)){
System.out.println(System.getProperty("line.separator"));
System.out.println("“空格”不能生成");
continue;
}
// 前台传递的日期字符串,或者数据库取出的日期
String dateStr = "--2020--02-29-";
// 字符串转日期
Date parseDate = null;
try {
parseDate = sdf.parse(countStr);
} catch (ParseException e) {
System.out.println("无法将字符串转换成日期。请重新输入:");
continue;
}
// 日历
Calendar cd = Calendar.getInstance();
cd.setTime(parseDate);
System.out.println("计算日期为:" + sdf.format(cd.getTime()));
System.out.println("开始进行分析:");
// 分别取出日月年
// 取年
int yearN = cd.get(Calendar.YEAR);
System.out.println("年:" + yearN);
int monthN = cd.get(Calendar.MONTH) + 1;
System.out.println("月:" + monthN);
int dayN = cd.get(Calendar.DAY_OF_MONTH);
System.out.println("日:" + dayN);
// 本月的最后一天
int actualMaximum = cd.getActualMaximum(Calendar.DAY_OF_MONTH);
System.out.println(monthN + "月的最后一天:" + actualMaximum);
System.out.println("--------------------");
// 定义flag
boolean febBoolean = false;
// 月末
boolean monthBoolean = false;
// 年末
boolean yearBoolean = false;
// 2月
if (monthN == 2) {
febBoolean = true;
}
if (actualMaximum == dayN) {
monthBoolean = true;
}
if (monthN == 12 && monthBoolean) {
yearBoolean = true;
}
System.out.println("累计需要统计的------》:");
System.out.print("更新" + dayN + "日数据!");
switch (dayN) {
case 10:
System.out.println(",需要更新" + monthN + "月旬数据表,上旬数据!");
break;
case 20:
System.out.println(",需要更新" + monthN + "月旬数据表,中旬数据!");
break;
case 28:
if (febBoolean && monthBoolean) {
System.out.println(",需要更新" + monthN + "月旬数据表,下旬数据,本月数据!");
break;
}
case 29:
if (febBoolean && monthBoolean) {
System.out.println(",需要更新" + monthN + "月旬数据表,下旬数据,本月数据!");
break;
}
case 30:
if (monthBoolean) {
System.out.println(",需要更新" + monthN + "月旬数据表,下旬数据,本月数据!");
break;
}
case 31:
if (monthBoolean) {
if (yearBoolean) {
System.out.println(",需要更新" + monthN + "月旬数据表,下旬数据,本月数据,本年数据!");
break;
}else {
System.out.println(",需要更新" + monthN + "月旬数据表,下旬数据,本月数据!");
break;
}
}
default:
System.out.println(",仅更新日数据!");
break;
}
}
}
【以此记录】,以备后用。