定义一个方法,可以计算出两个日期之间相差多少天 例如:2015年2月17日到2015年3月29日中间一共有多少天?

定义一个方法,可以计算出两个日期之间相差多少天

例如:2015年2月17日到2015年3月29日中间一共有多少天?
在这里插入图片描述

import java.util.Scanner;
public class Four {
    public static void main (String[] args){
        Scanner input = new Scanner(System.in);
        System.out.println("请输入第一个年月日");
        String str1 = input.next();
        System.out.println("请输入第二个年月日");
        String str2 = input.next();
        day(str1,str2);

    }
    public static int day(String s1,String s2){
        String years1 = " ";
        String years2 = " ";
        String month1 = " ";
        String month2 = " ";
        String day1 =" ";
        String day2 = "";
        for (int i = 0; i <4 ; i++) {
            years1 += s1.charAt(i);
            years2 += s2.charAt(i);
        }
        for (int i = 5; i <7 ; i++) {
            if (s1.charAt(i) != '年') {
                month1 += s1.charAt(i);
            }
            if (s2.charAt(i) != '年') {
                month2 += s2.charAt(i);
            }
        }
        if(s1.charAt(6) != '月'){
            for (int i = 8; i <10 ; i++) {
                day1 += s1.charAt(i);
            }
        }else{
            for (int i = 7; i <9 ; i++) {
                day1 += s1.charAt(i);
            }
        }
        if(s2.charAt(6) != '月'){
            for (int i = 8; i <10 ; i++) {
                day2 += s2.charAt(i);
            }
        }else{
            for (int i = 7; i <9 ; i++) {
                day2 += s2.charAt(i);
            }
        }

        int years = 0;
        int month = 0;
        int day =0;
        int SumYearDay=0;


        for(int i = Integer.parseInt(years1);i<Integer.parseInt(years2);i++){
            SumYearDay += (i%400==0||(i%100!=0&&i%4==0) ? 366 : 365);
        }
        for(int i = 1;i<=month;i++){
            switch (i) {
                case 2:
                    // 闰年二月29天,平年28天
                    day = years % 400 == 0 || (years % 100 != 0 && years % 4 == 0) ? 29 : 28;
                    break;
                case 1:
                case 3:
                case 5:
                case 7:
                case 8:
                case 10:
                case 12:
                    day = 31;
                    break;
                default:
                    day = 30;
            }
            if(i!=month){      // 条件不成立,不加
                SumYearDay += day;            // 用年份的总天数加上月份的总天数得出总天数
            }
        }
        return SumYearDay;
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值