美文网首页
Java8 计算日期之间相差的天数

Java8 计算日期之间相差的天数

作者: 小菜鸡 | 来源:发表于2020-07-23 19:25 被阅读0次

如题,笔试小题目,有Java 8 的LocalDate加持,三行就结束了:

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Scanner;

public class CalculateDays {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        try {
            LocalDate end = LocalDate.parse(scanner.nextLine().trim(), DateTimeFormatter.ofPattern("yyyy,M,d"));
            LocalDate begin = LocalDate.of(end.getYear(), 1, 1);
            System.out.println("result is " + (end.toEpochDay() - begin.toEpochDay() + 1));
        } catch (Exception ignored) {
            System.out.println("invalid parameter");
        }
    }
}

输入:2020,2,1
输出:

result is 32
//年月日超出范围输出:invalid parameter

对输入需要进行trim(),同时输入格式是yyyy,M,d,而不是yyyy,MM,dd,后者的话,如果输入为个位数,会抛出转换异常的。

需要注意的Java8里面的LocalDateLocalTime对象描述的分别是日期数轴与时间数轴上的具体“一刻”:

LocalDate
LocalTime
public class LocalDateTest {
    public static void main(String[] args) {
        LocalDate date = LocalDate.now();
        System.out.println("date = " + date);
        System.out.println("date.getYear() = " + date.getYear());
        System.out.println("date.getMonth().getValue() = " + date.getMonth().getValue());
        System.out.println("date.getDayOfMonth() = " + date.getDayOfMonth());
        System.out.println("date.getDayOfWeek() = " + date.getDayOfWeek());
        LocalTime time = LocalTime.now();
        System.out.println("time = " + time);
        System.out.println("time.getHour() = " + time.getHour());
        System.out.println("time.getMinute() = " + time.getMinute());
        System.out.println("time.getSecond() = " + time.getSecond());
        System.out.println("time.getNano() = " + time.getNano());
    }
}

相关文章

网友评论

      本文标题:Java8 计算日期之间相差的天数

      本文链接:https://www.haomeiwen.com/subject/qnzhlktx.html