前言:
小编吃了点药药,
终于流感要好啦(嘻嘻)
我们继续日更吧!!!
我们一直都是以这样的形式,让新手小白轻松理解复杂晦涩的概念,
把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”)转换回日期时间对象。这样就可以方便地从文本中读取日期时间信息进行处理。
我们今天就到这里,下次见吧!!!