输入一个日期,输出这是这一年的第几天。(题目中没有给出闰年的定义)
输入 20131231
输入 20131231
输出 365
package com.soft.wk;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class CalculationDate {
public static void main(String[] args) throws IOException {
/**
* 1、判断输入的是否都是数字,并判断长度是否为8
* 2、判断是否是年月日的组合
* 3、判断是平年还是闰年
* 4、计算日期
*/
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String str = in.readLine();
String trim = str.trim();
int isNumDay = 0;
if(trim != null && !"".equals(trim)){
if(trim.length() == 8){
String year = trim.substring(0, 4);
System.out.println("年份:" + year);
String month = trim.substring(4, 6);
System.out.println("月份:"+month);
String day = trim.substring(6, trim.length());
System.out.println("日:" + day);
//判断是平年还是闰年 能被4整除或者能被400整除的同时被100整除
int yearNum = Integer.parseInt(year);
int monthNum = Integer.parseInt(month);
int dayNum = Integer.parseInt(day);
if((0 == yearNum % 400 && 0 == yearNum % 100) || 0 == yearNum % 4){
//闰年
switch(monthNum){
case 1:
isNumDay = dayNum;
break;
case 2:
isNumDay = dayNum + 31;
break;
case 3:
isNumDay = dayNum + 31 + 29;
break;
case 4:
isNumDay = dayNum + 31 + 29 + 31;
break;
case 5:
isNumDay = dayNum + 31 + 29 + 31 + 30;
break;
case 6:
isNumDay = dayNum + 31 + 29 + 31 + 30 + 31;
break;
case 7:
isNumDay = dayNum + 31 + 29 + 31 + 30 + 31 + 30;
break;
case 8:
isNumDay = dayNum + 31 + 29 + 31 + 30 + 31 + 30 + 31;
break;
case 9:
isNumDay = dayNum + 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31;
break;
case 10:
isNumDay = dayNum + 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30;
break;
case 11:
isNumDay = dayNum + 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31;
break;
case 12:
isNumDay = dayNum + 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30;
break;
}
}else{
//平年
switch(monthNum){
case 1:
isNumDay = dayNum;
break;
case 2:
isNumDay = dayNum + 31;
break;
case 3:
isNumDay = dayNum + 31 + 28;
break;
case 4:
isNumDay = dayNum + 31 + 28 + 31;
break;
case 5:
isNumDay = dayNum + 31 + 28 + 31 + 30;
break;
case 6:
isNumDay = dayNum + 31 + 28 + 31 + 30 + 31;
break;
case 7:
isNumDay = dayNum + 31 + 28 + 31 + 30 + 31 + 30;
break;
case 8:
isNumDay = dayNum + 31 + 28 + 31 + 30 + 31 + 30 + 31;
break;
case 9:
isNumDay = dayNum + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31;
break;
case 10:
isNumDay = dayNum + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30;
break;
case 11:
isNumDay = dayNum + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31;
break;
case 12:
isNumDay = dayNum + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30;
break;
}
}
}
}
System.out.println("是输入年份的第"+isNumDay+"天");
}
/**
* 判断是否匹配数字
* @param number
* @return
*/
public static boolean isNumber(String number){
if(number != null && !"".equals(number)){
Pattern p = Pattern.compile("^[0-9]+$");
Matcher m = p.matcher(number);
if(!m.matches()){
return false;
}
}
return true;
}
}