算法编程(二十四):日期之间隔几天

简介: 算法编程(二十四):日期之间隔几天

写在前面


今天这道题,是平时开发中很常见的一个操作,计算两个日期之间的相差天数,同时也是属于字符串结构的一道题目。

一起来看一下吧。

image.png

题目解读


根据这道题目的描述来看,就是简单的计算日期之间的相差天数。

也没什么,在平时开发中,没有特殊情况之下,只需要利用Java中的API来进行判断即可。

下面我们就来看一下具体的代码编写吧。

代码实现


本次执行代码如下所示,大家可以自行参考一下。

public class Solution {
    public static void main(String[] args) {
        Solution solution = new Solution();
        System.out.println(solution.daysBetweenDates("2019-06-29", "2019-06-30"));
    }
    public int daysBetweenDates(String date1, String date2) {
        LocalDate d1 = LocalDate.parse(date1, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
        LocalDate d2 = LocalDate.parse(date2, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
        int result = (int) (d2.toEpochDay() - d1.toEpochDay());
        if(result >= 0){
            return result;
        }else{
            return result * -1;
        }
    }
    public int daysBetweenDates1(String date1, String date2) {
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        try {
            Date dt1 = df.parse(date1);
            Date dt2 = df.parse(date2);
            return Long.compare(dt1.getTime(), dt2.getTime());
        } catch (Exception exception) {
            exception.printStackTrace();
        }
        return 0;
    }
}

代码中使用了两种方式来计算,复制到leetcode上时,记得手动引入相应的包。

代码执行结果如下


代码执行结果真是够拉胯,果然使用API远不如各位大佬自己计算来的性能高。

image.png

其他思路


其他思路也不是没有,比如通过split方法分割年月日,然后通过数值之间的计算来算出相差的数字。

其中要注意到一个月有30、31、28的情况,每年有365、366的情况,将这些情况处理好,就没什么问题了。

总结


此题其实主要还是考察对字符串的分割,转换,计算等基础操作,奈何我太懒,直接就用相应的API写了,这效率果然够低。


相关文章
|
2月前
|
算法 数据安全/隐私保护
火山中文编程 -- MD5算法和SHA算法
火山中文编程 -- MD5算法和SHA算法
19 0
火山中文编程 -- MD5算法和SHA算法
|
4月前
|
算法 Java
算法编程(三十):交替合并字符串
算法编程(三十):交替合并字符串
47 0
|
4月前
|
算法
算法编程(二十八):重新排列单词间的空格
算法编程(二十八):重新排列单词间的空格
35 0
|
4月前
|
算法
算法编程(二十七):千位分隔数
算法编程(二十七):千位分隔数
40 0
算法编程(二十七):千位分隔数
|
4月前
|
存储 算法
算法编程(二十六):判断路径是否相交
算法编程(二十六):判断路径是否相交
29 0
|
4月前
|
算法
算法编程(二十五):检查单词是否为句中其他单词的前缀
算法编程(二十五):检查单词是否为句中其他单词的前缀
35 0
|
3月前
|
机器学习/深度学习 算法
机器学习 - [集成学习]Bagging算法的编程实现
机器学习 - [集成学习]Bagging算法的编程实现
32 1
|
2月前
|
机器学习/深度学习 算法 C语言
【编码狂想】深度探索C++编程之旅:“数组、字符串、函数与KMP算法解密“
【编码狂想】深度探索C++编程之旅:“数组、字符串、函数与KMP算法解密“
73 0
|
28天前
|
存储 算法 JavaScript
Java入门高频考查算法逻辑基础知识3-编程篇(超详细18题1.8万字参考编程实现)
解决这类问题时,建议采取下面的步骤: 理解数学原理:确保你懂得基本的数学公式和法则,这对于制定解决方案至关重要。 优化算法:了解时间复杂度和空间复杂度,并寻找优化的机会。特别注意避免不必要的重复计算。 代码实践:多编写实践代码,并确保你的代码是高效、清晰且稳健的。 错误检查和测试:要为你的代码编写测试案例,测试标准的、边缘情况以及异常输入。 进行复杂问题简化:面对复杂的问题时,先尝试简化问题,然后逐步分析和解决。 沟通和解释:在编写代码的时候清晰地沟通你的思路,不仅要写出正确的代码,还要能向面试官解释你的
33 0
|
1月前
|
存储 算法 JavaScript
【C++ 泛型编程 入门篇】 C++ 中的泛型算法 STL(sort,find)(二)
【C++ 泛型编程 入门篇】 C++ 中的泛型算法 STL(sort,find)
28 0