首页 > 其他分享 >日期之间隔几天

日期之间隔几天

时间:2023-08-09 19:11:15浏览次数:31  
标签:date1 date2 int 31 几天 substring 日期 之间 parseInt

请你编写一个程序来计算两个日期之间隔了多少天。

日期以字符串形式给出,格式为 YYYY-MM-DD,如示例所示。

示例 1:

输入:date1 = "2019-06-29", date2 = "2019-06-30"
输出:1
示例 2:

输入:date1 = "2020-01-15", date2 = "2019-12-31"
输出:15

算出两个天数的差值

class Solution {
    public int daysBetweenDates(String date1, String date2) {
        //获取日期的年月日
        int year1 = Integer.parseInt(date1.substring(0,4));
        int momth1 = Integer.parseInt(date1.substring(5,7));
        int day1 = Integer.parseInt(date1.substring(8,10));
        int year2 = Integer.parseInt(date2.substring(0,4));
        int momth2 = Integer.parseInt(date2.substring(5,7));
        int day2 = Integer.parseInt(date2.substring(8,10));
        //分别计算两个date距离1971-1-1的天数,结果相差就是了
        momth1 = monthDays(momth1,year1);
        momth2 = monthDays(momth2,year2);
        year1 = yearDays(year1);
        year2 = yearDays(year2);
        day1 += year1 + momth1;
        day2 += year2 + momth2;
        return day1>day2?day1-day2:day2-day1;
    }

    private static int monthDays(int momth,int year) {
        int day = 0;
        int amount[] = {0,31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
        for(int i=1;i<momth;i++){
            if(i==2&&isLeapYear(year)){
                day+=29;
                continue;
            }
            day+= amount[i];
        }
        return day;
    }

    public static int yearDays(int year){
        int day = 0;
        for(int i = 1971;i<year;i++){
            day += isLeapYear(i)?366:365;
        }
        return day;
    }

    public static boolean isLeapYear(int year) {
        return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
    }

}

标签:date1,date2,int,31,几天,substring,日期,之间,parseInt
From: https://www.cnblogs.com/xiaochaofang/p/17617786.html

相关文章

  • Java学习之进制之间的转换
    importjava.util.*;publicclassJinzhi{publicstaticvoidmain(String[]args){/***总结:*二进制转换八进制:每三位转换*二进制转换十六进制:每四位转换*十进制转二进制:除以2取余数,得到的余数进行倒叙展示......
  • 【Python】日期格式转换 <字符串、datetime、date>
    #coding:utf-8importdatetimefromdateutil.parserimportparsefromdateutil.relativedeltaimportrelativedeltafromloguruimportloggeraslogsclassdate_transform:"""日期格式转换"""defauto(self,d):"......
  • 两个或多个docker容器之间通过名字相互访问
    转自两个或多个docker容器之间通过名字相互访问[https://zhuanlan.zhihu.com/p/258939355]需要公用一个自定义网络官方特意解释了这两个网卡的区别User-definedbridgesprovideautomaticDNSresolutionbetweencontainers.Containersonthedefaultbridgenetwork......
  • shell命令概述 Shell作用:命令解释器 介于操作系统内核与用户之间,负责解释命令行 获得
    shell命令概述Shell作用:命令解释器介于操作系统内核与用户之间,负责解释命令行获得命令帮助内部命令help命令的“--help”选项使用man命令阅读手册页命令行编辑的几个辅助操作Tab键:自动补齐反斜杠“\”:强制换行快捷键Ctrl+U:清空至行首快捷键Ctrl+K:清空至行尾快捷键Ctr......
  • MySql日期格式化
    字符串转日期STR_TO_DATE()函数:占位符含义%Y年份,四位数字%m月份,两位数字%d日期,两位数字%H小时,24小时制,两位数字%i分钟,两位数字%s秒数,两位数字selectSTR_TO_DATE('2023-01-0112:00:00','%Y-%m-%d%T')fromdual;结果:2023-01-0112:00:00......
  • c#去html标志,对字符串保留数字小数点,有中文的日期转化等特殊数据处理
    命名空间usingSystem.Text.RegularExpressions;1.我们采集到的数据比如有些日期很不规则带有中文比如2013年5月8日  2013年5月 这里提供把这类不规则的日期转化成datatime类型publicDateTimeConvertTime(stringa){DateTimedt......
  • Siemens 西门子S7-200SMART两台PLC之间的MODBUS主从站通信
    通过MODBUS通信的方式实现两台PLC的主从站通信:主站的PLC的I0.0~I0.7控制从站PLC的Q0.0~Q0.7从站的I0.0~I0.7控制主站的Q0.0~Q0.7读取从站AIW16所采集到的数值读到主站的VW100中把主站的MW10~MW16的数据写给从站的VW100~VW106中。主站程序参考如下 从站程序如果只有一......
  • 故障转移群集和AD域之间的交互
    1故障转移群集和域控简介AD全文为ActiveDirectory,在微软中常见到AD域服务(ADDS)和AD域控两种名词,安装了AD域角色之后,并在此服务器上创建了林和域(一个林内可以有多个域),该服务器即成为域控。域控中存储了一系列对象,包括:用户、组、计算机、域、组织单位和安全策略。这些对象可以被......
  • FactoryBean和BeanFactory之间的区别
    BeanFactory是Spring框架中的核心接口,它是一个管理和获取Bean对象的工厂。它定义了一种机制,用于实例化、配置和管理Bean对象,并根据需要将它们提供给应用程序。相当于是一家大的工厂,这个工厂可以提供各种类型的Bean。FactoryBean用于创建或包装其他Bean。实现FactoryBean接口的类......
  • shell命令概述 Shell作用:命令解释器 介于操作系统内核与用户之间,负责解释命令行 获得
    shell命令概述Shell作用:命令解释器介于操作系统内核与用户之间,负责解释命令行获得命令帮助内部命令help命令的“--help”选项使用man命令阅读手册页命令行编辑的几个辅助操作Tab键:自动补齐反斜杠“\”:强制换行快捷键Ctrl+U:清空至行首快捷键Ctrl+K:清空至行尾快捷键Ctr......