持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第24天,点击查看活动详情
写在前面
今天这道题,是平时开发中很常见的一个操作,计算两个日期之间的相差天数,同时也是属于字符串结构的一道题目。
一起来看一下吧。
题目解读
根据这道题目的描述来看,就是简单的计算日期之间的相差天数。
也没什么,在平时开发中,没有特殊情况之下,只需要利用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远不如各位大佬自己计算来的性能高。
其他思路
其他思路也不是没有,比如通过split方法分割年月日,然后通过数值之间的计算来算出相差的数字。
其中要注意到一个月有30、31、28的情况,每年有365、366的情况,将这些情况处理好,就没什么问题了。
总结
此题其实主要还是考察对字符串的分割,转换,计算等基础操作,奈何我太懒,直接就用相应的API写了,这效率果然够低。