Java输入开始时间和结束输出全部对应的年月、年份、日期

简介: Java输入开始时间和结束输出全部对应的年月、年份、日期

1.Java输入开始时间和结束输出全部对应的年月

要输出给定日期范围内的所有年月,可以使用循环来逐个遍历月份,然后格式化为对应的年月字符串。下面是一个示例代码:

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class Main {
    public static void main(String[] args) {
        String startDateString = "2023-01-29";
        String endDateString = "2023-10-01";
        // 解析输入的开始日期和结束日期
        LocalDate startDate = LocalDate.parse(startDateString, DateTimeFormatter.ISO_DATE);
        LocalDate endDate = LocalDate.parse(endDateString, DateTimeFormatter.ISO_DATE);
        // 循环遍历每个月份,输出对应的年月字符串
        LocalDate currentDate = startDate;
        while (!currentDate.isAfter(endDate)) {
            String yearMonthString = currentDate.format(DateTimeFormatter.ofPattern("yyyy-MM"));
            System.out.println(yearMonthString);
            // 增加一个月
            currentDate = currentDate.plusMonths(1);
        }
    }
}

输出结果:

2023-01
2023-02
2023-03
2023-04
2023-05
2023-06
2023-07
2023-08
2023-09
2023-10

以上代码使用LocalDate类来表示日期,通过调用format方法结合DateTimeFormatter来指定日期的格式。在循环中,首先格式化当前日期为年月字符串,并输出;然后使用plusMonths(1)方法增加一个月,以便在下次循环时处理下一个月份。最终,会输出给定日期范围内的所有年月。

2.Java输入开始时间和结束输出全部对应的年份

要从输入的日期字符串中提取年份,可以使用substring()方法截取字符串的一部分。具体来说,在这个问题中,我们可以使用substring()方法获取字符串中"-"前面的部分,即年份。

以下是一个示例代码,演示如何从输入的日期字符串中提取年份:

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入日期1(格式为yyyy-mm-dd):");
        String date1 = scanner.nextLine();
        System.out.print("请输入日期2(格式为yyyy-mm-dd):");
        String date2 = scanner.nextLine();
        // 获取年份
        String year1 = date1.substring(0, 4);
        String year2 = date2.substring(0, 4);
        // 输出结果
        System.out.println(date1 + " 对应的年份为:" + year1);
        System.out.println(date2 + " 对应的年份为:" + year2);
    }
}

示例输出如下:

请输入日期1(格式为yyyy-mm-dd):2022-01-29

请输入日期2(格式为yyyy-mm-dd):2023-10-01

2022-01-29 对应的年份为:2022

2023-10-01 对应的年份为:2023

在示例中,我们首先创建了一个Scanner对象来读取用户输入。然后,我们提示用户输入两个日期字符串,并使用nextLine()方法读取输入。

接下来,我们使用substring()方法从日期字符串中提取年份。由于年份的长度为4个字符,因此我们可以使用起始索引0和结束索引4来截取字符串的第1到第4个字符。

最后,我们将结果输出到控制台。

3.java根据输入的2023-10-01和2023-10-23输出全部的天数

以下是Java代码实现:

import java.time.Duration;
import java.time.LocalDate;
public class DaysBetweenDates {
    public static void main(String[] args) {
        // 日期格式为年-月-日
        String date1Str = "2023-10-01";
        String date2Str = "2023-10-23";
        // 将字符串转换为 LocalDate 类型
        LocalDate date1 = LocalDate.parse(date1Str);
        LocalDate date2 = LocalDate.parse(date2Str);
        // 使用 Duration 类计算两个日期的差值
        Duration duration = Duration.between(date1.atStartOfDay(), date2.atStartOfDay());
        // 获取相差的天数
        long days = duration.toDays();
        System.out.println("从" + date1Str + "到" + date2Str + "一共有 " + days + " 天。");
    }
}

运行结果为:

从2023-10-01到2023-10-23一共有 22 天。

这里使用了新的时间 API(java.time 包)来计算日期差值,可以更方便地处理日期和时间相关的操作。具体而言,我们将输入的字符串转换为 LocalDate 对象后,使用 Duration.between() 方法计算日期间隔并返回一个 Duration 对象,最后再使用 toDays() 方法获取相差的天数即可。

4.java根据输入的2023-10-01和2023-10-23输出全部的日期

以下是Java代码实现:

import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
public class DatesBetweenDates {
    public static void main(String[] args) {
        // 日期格式为年-月-日
        String date1Str = "2023-10-01";
        String date2Str = "2023-10-23";
        // 将字符串转换为 LocalDate 类型
        LocalDate date1 = LocalDate.parse(date1Str);
        LocalDate date2 = LocalDate.parse(date2Str);
        // 获取两个日期之间的全部日期
        long daysBetween = ChronoUnit.DAYS.between(date1, date2);
        for (int i = 0; i <= daysBetween; i++) {
            LocalDate currentDate = date1.plusDays(i);
            System.out.println(currentDate);
        }
    }
}

运行结果为:

2023-10-01
2023-10-02
2023-10-03
...
2023-10-22
2023-10-23

在这段代码中,我们使用了 ChronoUnit.DAYS.between() 方法来计算两个日期之间的天数差。然后使用 for 循环遍历从起始日期到结束日期的每一天,并将它们打印出来。通过 LocalDate.plusDays() 方法,我们可以方便地增加指定的天数得到下一个日期。这样就能够输出起始日期到结束日期之间的全部日期。

相关文章
|
22天前
|
Java 数据库
java小工具util系列1:日期和字符串转换工具
java小工具util系列1:日期和字符串转换工具
53 26
|
1月前
|
安全 Java API
告别SimpleDateFormat:Java 8日期时间API的最佳实践
在Java开发中,处理日期和时间是一个基本而重要的任务。传统的`SimpleDateFormat`类因其简单易用而被广泛采用,但它存在一些潜在的问题,尤其是在多线程环境下。本文将探讨`SimpleDateFormat`的局限性,并介绍Java 8引入的新的日期时间API,以及如何使用这些新工具来避免潜在的风险。
34 5
|
5月前
|
Java
Java基础之日期和时间
Java基础之日期和时间
40 1
|
6月前
|
安全 Java 程序员
Java8实战-新的日期和时间API
Java8实战-新的日期和时间API
51 3
|
2月前
|
Java API
Java的日期类都是怎么用的
【10月更文挑战第1天】本文介绍了 Java 中处理日期和时间的三个主要类:`java.util.Date`、`java.util.Calendar` 和 `java.time` 包下的新 API。`Date` 类用于表示精确到毫秒的瞬间,可通过时间戳创建或获取当前日期;`Calendar` 抽象类提供丰富的日期操作方法,如获取年月日及时区转换;`java.time` 包中的 `LocalDate`、`LocalTime`、`LocalDateTime` 和 `ZonedDateTime` 等类则提供了更为现代和灵活的日期时间处理方式,支持时区和复杂的时间计算。
48 14
|
3月前
|
Java 数据库
java小工具util系列1:日期和字符串转换工具
java小工具util系列1:日期和字符串转换工具
55 3
|
3月前
|
安全 Java API
时间日期API(Date,SimpleDateFormat,Calendar)+java8新增日期API (LocalTime,LocalDate,LocalDateTime)
这篇文章介绍了Java中处理日期和时间的API,包括旧的日期API(Date、SimpleDateFormat、Calendar)和Java 8引入的新日期API(LocalTime、LocalDate、LocalDateTime)。文章详细解释了这些类/接口的方法和用途,并通过代码示例展示了如何使用它们。此外,还讨论了新旧API的区别,新API的不可变性和线程安全性,以及它们提供的操作日期时间的灵活性和简洁性。
|
4月前
|
前端开发 JavaScript Java
【前端学java】java中的日期操作(13)
【8月更文挑战第10天】java中的日期操作
26 2
【前端学java】java中的日期操作(13)
|
4月前
|
Java
比较两个日期是否相等Java
这篇文章提供了Java中比较两个日期是否相等的两种方法:使用`Calendar`类和`SimpleDateFormat`类来确定两个日期是否为同一天,并附有详细的代码示例和测试结果。
|
6月前
|
Java 测试技术 API
滚雪球学Java(52):一步一步教你使用Java Calendar类进行日期计算
【6月更文挑战第6天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
56 3
滚雪球学Java(52):一步一步教你使用Java Calendar类进行日期计算