本地日期时间:LocalDate、LocalTime、LocalDateTime的全面总结和详细拆解!!!

前言:

小编吃了点药药,

终于流感要好啦(嘻嘻)

我们继续日更吧!!!

我们一直都是以这样的形式,让新手小白轻松理解复杂晦涩的概念,

把Java代码拆解的清清楚楚,每一步都知道他是怎么来的,

为什么用这串代码关键字,对比同类型的代码,

让大家真正看完以后融会贯通,举一反三,实践应用!!!!


①官方定义  和  大白话拆解对比

②举生活中常见贴合例子、图解辅助理解的形式

③对代码实例中关键部分进行详细拆解、总结



给小编一个赞或者关注吧,我们一起进步!!

官方语言:


1、now() / now(ZoneId zone):

  • 描述: 静态方法,根据当前时间创建对象/指定时区的对象。
LocalDate today = LocalDate.now();
LocalDate todayInNewYork = LocalDate.now(ZoneId.of("America/New_York"));

2、of(xx, xx, xx, xx, xx, xxx):

  • 描述: 静态方法,根据指定日期/时间创建对象。
LocalDateTime specificDateTime = LocalDateTime.of(2023, Month.JANUARY, 1, 12, 0, 0);


 

3、getDayOfMonth() / getDayOfYear():

  • 描述: 获得月份天数(1-31) /获得年份天数(1-366)。
int dayOfMonth = LocalDate.now().getDayOfMonth();
int dayOfYear = LocalDate.now().getDayOfYear();

4、getDayOfWeek():

  • 描述: 获得星期几(返回一个 DayOfWeek 枚举值)。
DayOfWeek dayOfWeek = LocalDate.now().getDayOfWeek();

5、getMonth():

  • 描述: 获得月份,返回一个 Month 枚举值。
Month month = LocalDate.now().getMonth();

6、getMonthValue() / getYear():

  • 描述: 获得月份(1-12) /获得年份
int monthValue = LocalDate.now().getMonthValue();
int year = LocalDate.now().getYear();

7、getHours() / getMinute() / getSecond():

  • 描述: 获得当前对象对应的小时、分钟、秒。
int hours = LocalTime.now().getHour();
int minutes = LocalTime.now().getMinute();
int seconds = LocalTime.now().getSecond();

8、withDayOfMonth() / withDayOfYear() / withMonth() / withYear():

  • 描述: 将月份天数、年份天数、月份、年份修改为指定的值并返回新的对象。
LocalDate modifiedDate = LocalDate.now().withDayOfMonth(15).withMonth(12).withYear(2023);

9、with(TemporalAdjuster t):

  • 描述: 将当前日期时间设置为校对器指定的日期时间。
LocalDate nextMonday = LocalDate.now().with(TemporalAdjusters.next(DayOfWeek.MONDAY));

10、plusDays(), plusWeeks(), plusMonths(), plusYears(), plusHours():

  • 描述: 向当前对象添加几天、几周、几个月、几年、几小时。
LocalDate futureDate = LocalDate.now().plusDays(7).plusWeeks(2).plusMonths(3).plusYears(1).plusHours(5);

大白话拆解:

1、now() / now(ZoneId zone):

  • 描述: 根据当前时间创建一个日期对象,或者指定时区的时间。
// 创建今天的日期
LocalDate today = LocalDate.now();
// 创建纽约时区的今天日期
LocalDate todayInNewYork = LocalDate.now(ZoneId.of("America/New_York"));

2、of(xx, xx, xx, xx, xx, xxx):

  • 描述: 根据你指定的具体日期和时间创建一个日期时间对象。
// 创建2023年1月1日中午12点的日期时间
LocalDateTime specificDateTime = LocalDateTime.of(2023, Month.JANUARY, 1, 12, 0, 0);

3、getDayOfMonth() / getDayOfYear():

  • 描述: 获取当前日期是这个月的第几天或这一年中的第几天。
// 获取今天是这个月的第几天
int dayOfMonth = LocalDate.now().getDayOfMonth();
// 获取今天是一年的第几天
int dayOfYear = LocalDate.now().getDayOfYear();

4、getDayOfWeek():

  • 描述: 获取今天是星期几。
  • // 获取今天是星期几
    DayOfWeek dayOfWeek = LocalDate.now().getDayOfWeek();

5、getMonth():

  • 描述: 获取当前日期是哪个月。
// 获取今天是哪个月
Month month = LocalDate.now().getMonth();

6、getMonthValue() / getYear():

  • 描述: 获取当前日期是哪个月(数字表示)或哪一年。
// 获取今天是哪个月(数字表示)
int monthValue = LocalDate.now().getMonthValue();
// 获取今天是哪一年
int year = LocalDate.now().getYear();

7、getHours() / getMinute() / getSecond():

  • 描述: 获取当前时间是几点、几分、几秒。
// 获取现在是几点
int hours = LocalTime.now().getHour();
// 获取现在是几分
int minutes = LocalTime.now().getMinute();
// 获取现在是几秒
int seconds = LocalTime.now().getSecond();

8、withDayOfMonth() / withDayOfYear() / withMonth() / withYear():

  • 描述: 修改当前日期的某一部分(如月份天数、年份天数、月份、年份)为指定的值。
// 修改今天的日期为12月15日,2023年
LocalDate modifiedDate = LocalDate.now().withDayOfMonth(15).withMonth(12).withYear(2023);

9、with(TemporalAdjuster t):

  • 描述: 根据特定规则调整当前日期时间。
// 将今天的日期调整为下个星期一
LocalDate nextMonday = LocalDate.now().with(TemporalAdjusters.next(DayOfWeek.MONDAY));

10、plusDays(), plusWeeks(), plusMonths(), plusYears(), plusHours():

  • 描述: 在当前日期时间的基础上增加指定的天数、周数、月数、年数或小时数。
// 在今天的基础上增加7天、2周、3个月、1年和5小时
LocalDate futureDate = LocalDate.now().plusDays(7).plusWeeks(2).plusMonths(3).plusYears(1).plusHours(5);

11、minusMonths() / minusWeeks() / minusDays() / minusYears() / minusHours()


官方语言:

  • minusMonths(int months):从当前日期减去指定的月数。
  • minusWeeks(int weeks):从当前日期减去指定的周数。
  • minusDays(int days):从当前日期减去指定的天数。
  • minusYears(int years):从当前日期减去指定的年数。
  • minusHours(int hours):从当前时间减去指定的小时数。


大白话拆解:

  • minusMonths(int months):从今天的日期中减去几个月。
  • minusWeeks(int weeks):从今天的日期中减去几周。
  • minusDays(int days):从今天的日期中减去几天。
  • minusYears(int years):从今天的日期中减去几年。
  • minusHours(int hours):从当前时间中减去几小时。


12、 plus(TemporalAmount t) / minus(TemporalAmount t)


官方语言:

  • plus(TemporalAmount amountToAdd):向当前日期时间添加一个TemporalAmount。
  • minus(TemporalAmount amountToSubtract):从当前日期时间减去一个TemporalAmount。

大白话拆解:

  • plus(TemporalAmount amountToAdd):在当前日期时间上加上一段时间。
  • minus(TemporalAmount amountToSubtract):从当前日期时间中减去一段时间。


13、 isBefore() / isAfter()


官方语言:

  • isBefore(LocalDate other):检查当前日期是否早于另一个日期。
  • isAfter(LocalDate other):检查当前日期是否晚于另一个日期。


大白话拆解:

  • isBefore(LocalDate other):判断当前日期是否比另一个日期早。
  • isAfter(LocalDate other):判断当前日期是否比另一个日期晚。


14. isLeapYear()


官方语言

  • isLeapYear():判断当前日期所在的年份是否为闰年。


大白话拆解:

  • isLeapYear():判断当前日期所在的年份是否是闰年。


15. format(DateTimeFormatter t)


官方语言:

  • format(DateTimeFormatter formatter):使用指定的格式化器将日期时间格式化为字符串。


大白话拆解:

  • format(DateTimeFormatter formatter):将日期时间按照指定的格式转换成字符串。


16. parse(CharSequence text)


官方语言:

  • parse(CharSequence text, DateTimeFormatter formatter):将指定格式的字符串解析为日期时间。


大白话拆解:

  • parse(CharSequence text, DateTimeFormatter formatter):将符合指定格式的字符串转换成日期时间对象。

举个栗子:

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;

public class DateTimeExample {
    public static void main(String[] args) {
        // 创建日期时间对象
        LocalDate date = LocalDate.now();
        LocalTime time = LocalTime.now();
        LocalDateTime dateTime = LocalDateTime.now();

        System.out.println("当前日期: " + date);
        System.out.println("当前时间: " + time);
        System.out.println("当前日期时间: " + dateTime);

        // 减去月份、周、天、年、小时
        LocalDate modifiedDate = date.minusMonths(1).minusWeeks(2).minusDays(3).minusYears(1).minusHours(4);
        System.out.println("修改后的日期: " + modifiedDate);

        // 添加或减少一个Duration或Period
        LocalDateTime modifiedDateTime = dateTime.plusMonths(1).minusWeeks(2).minusDays(3).minusYears(1).minusHours(4);
        System.out.println("修改后的日期时间: " + modifiedDateTime);

        // 比较两个日期
        LocalDate anotherDate = LocalDate.of(2023, 10, 5);
        if (date.isBefore(anotherDate)) {
            System.out.println("当前日期早于" + anotherDate);
        } else if (date.isAfter(anotherDate)) {
            System.out.println("当前日期晚于" + anotherDate);
        } else {
            System.out.println("当前日期等于" + anotherDate);
        }

        // 判断是否是闰年
        boolean isLeapYear = date.isLeapYear();
        System.out.println("当前年份是否为闰年: " + isLeapYear);

        // 格式化日期时间
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        String formattedDateTime = dateTime.format(formatter);
        System.out.println("格式化后的日期时间: " + formattedDateTime);

        // 解析日期时间
        LocalDateTime parsedDateTime = LocalDateTime.parse(formattedDateTime, formatter);
        System.out.println("解析后的日期时间: " + parsedDateTime);
    }
}

代码解释和总结:

1、创建日期时间对象

LocalDate date = LocalDate.now();
LocalTime time = LocalTime.now();
LocalDateTime dateTime = LocalDateTime.now();
  • LocalDate就像是你日历上的一个标记,它告诉你今天的日期是什么。
  • LocalTime就像是时钟,它只显示当前的时间,没有日期信息。
  • LocalDateTime则像是结合了日历和时钟,既提供日期也提供时间。

2、减去月份、周、天、年、小时

LocalDate modifiedDate = date.minusMonths(1).minusWeeks(2).minusDays(3).minusYears(1).minusHours(4);
  • 这段代码从今天的日期开始,减去了1个月、2周、3天、1年和4小时。
  • 虽然LocalDate不支持直接减去小时(因为它只关心日期),这里只是为了展示方法的连用。实际上,减去小时应该用LocalDateTime。

3、添加或减少一个Duration或Period

LocalDateTime modifiedDateTime = dateTime.plusMonths(1).minusWeeks(2).minusDays(3).minusYears(1).minusHours(4);
  • 类似于上面的例子,但是这次我们是在LocalDateTime上操作,所以可以同时处理日期和时间。
  • 这行代码在当前的日期时间基础上,增加了1个月,然后减少了2周、3天、1年和4小时。

4、比较两个日期

if (date.isBefore(anotherDate)) {
    System.out.println("当前日期早于" + anotherDate);
} else if (date.isAfter(anotherDate)) {
    System.out.println("当前日期晚于" + anotherDate);
} else {
    System.out.println("当前日期等于" + anotherDate);
}
  • 这里我们创建了一个特定日期anotherDate,然后比较它与今天的日期。
  • 如果今天的日期在这个特定日期之前,就说“今天早于这个日期”;
  • 如果之后,就说“今天晚于这个日期”;如果两者相等,则说“今天的日期就是这个日期”。

5、判断是否是闰年

boolean isLeapYear = date.isLeapYear();
System.out.println("当前年份是否为闰年: " + isLeapYear);
  • 这行代码检查当前年份是否为闰年,并输出结果。如果是闰年,会输出“当前年份是闰年”,否则会输出“当前年份不是闰年”。

6、格式化日期时间

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formattedDateTime = dateTime.format(formatter);
  • 这里我们定义了一种日期时间的格式(例如:2025-01-16 16:03:00),并用这种格式将当前的日期时间转换成字符串形式。

7、解析日期时间

LocalDateTime parsedDateTime = LocalDateTime.parse(formattedDateTime, formatter);
  • 这段代码演示了如何将符合特定格式的字符串(如“2025-01-16 16:03:00”)转换回日期时间对象。这样就可以方便地从文本中读取日期时间信息进行处理。



我们今天就到这里,下次见吧!!!



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值