黑马程序员 根据输入的日期计算出是一年中的第多少天
上一篇 /
下一篇 2014-07-06 22:07:04
/ 个人分类:java知识
class dateDemo
{
public static void main(String[] args) throws IOException
{
System.out.println("请输入日期:");
int month = 0,day = 0;
int year = 0;
//建立转换流
BufferedReader bf =
new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw =
new BufferedWriter(new OutputStreamWriter(System.out));
String s = null;
StringBuilder sb=new StringBuilder();
while((s = bf.readLine())!=null)//判断读入是否结束
{
sb.append(s);//读入数据存入容器
year = Integer.valueOf(s.substring(0,4)); //根据索引位置从字符串中取出年份并转换为整数类型
if(Integer.valueOf(s.substring(4,5)) == 0)//判断第四位数据是否为0,如果为0,则月份是第五位
{
month = Integer.valueOf(s.substring(5,6));
}
else{
if(Integer.valueOf(s.substring(4,6)) <= 12) //第四位数据不是0,并且第四五位的子串值小于12,则月份取第四五位。
month = Integer.valueOf(s.substring(4,6));
else
System.out.println("月份输入错误");
}
if( Integer.valueOf(s.substring(6))<31)//当月的天数是从六位开始的子串,如果小于31天,则为当月天数
{
day = Integer.valueOf(s.substring(6)); //
}
else{System.out.println("你输入的天数有错");}
//调用Day方法算出天数
System.out.println(year+"年"+month+"月"+day+"日");
System.out.println("第"+SumDay(year,month,day)+"天"); //调用静态方法求出天数
WeekDay(s);//调用静态方法求出具体的星期
}
}
public static void WeekDay(String day)
{
String[] str ={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");//日期格式化
Date d = new Date();
try
{
d = df.parse(day);//parse把字符串转换为日期,格式化日期
}
catch(ParseException e)
{
e.printStackTrace();
}
for(int i=0;i<str.length;i++){
if(d.getDay()==(i)) //根据取出来的数与数组角标进行比较
{
System.out.println(str[i]);
}
}
}
public static int SumDay(long year,int month,int day)
{
int daySum= 0;
for (int i= 1; i< month;i++){
switch(i){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
daySum+= 31; //当月份为1,3,5,7,8,10,12时,为31天
break;
case 4:
case 6:
case 9:
case 11:
daySum+= 30; //当月份为4,6,9,11时,为30天
break;
case 2:
if(((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))//闰年的判断1.能被4整除,但不能被100整除。2.能被400整除 。
daySum+= 29; // 判断是否为闰年,如果是为29天 ,如果不是为28天
else
daySum+= 28;
}
}
return daySum+day;
}
收藏
举报
TAG: