java基础之日期对象LocalDate

目录

1、LocalDate(jdk1.8)

1.1 now(): 给出LocalDate实例,该实例包含默认时区的系统时钟的当前日期。

1.2 now(Clock clock): 提供LocalDate实例,该实例具有从指定时钟获得的当前日期。

1.3 now(ZoneId zone): 给出当前日期的LocalDate实例,该日期来自指定时区的系统时钟。

1.4 of(int year, int month, int dayOfMonth): 从给定的年、月、日中获得LocalDate实例,输入数据类型为int。

1.5 of(int year, Month month, int dayOfMonth): 从给定的年(int)、月(Month)和日(int)给出LocalDate实例。

1.6 ofEpochDay(long epochDay): 从给定的纪元日数中给出LocalDate实例。

1.7 ofInstant(Instant instant, ZoneId zone): 从给定的Instant和ZoneId给出LocalDate实例。

1.8 ofYearDay(int year, int dayOfYear): 从给定的年份和年份中的天数给出LocalDate实例,输入数据类型为int。

1.9 parse(CharSequence text): 从给定的文本字符串,如 "2018-10-01",给出LocalDate实例。

1.10 parse(CharSequence text, DateTimeFormatter formatter): 从给定格式的文本字符串中获得LocalDate实例。输出的LocalDate将是yyyy-MM-dd格式。 

1.11 from(TemporalAccessor temporal): 从给定的时间对象中获得LocalDate实例。

 1.12 plus(long amountToAdd, TemporalUnit unit): 通过增加给定的数量返回LocalDate实例。

1.13 plus(TemporalAmount amountToAdd): 通过添加指定的TemporalAmount返回LocalDate实例。

1.14 plusDays(long daysToAdd): 通过添加指定的天数返回LocalDate实例。

1.15 plusWeeks(long weeksToAdd): 通过添加指定的周数返回 LocalDate 实例,用法与plusDays类似。

1.16 plusMonths(long monthsToAdd): 通过添加指定的月数返回 LocalDate 实例,用法与plusDays类似。

1.17 plusYears(long yearsToAdd): ,通过添加指定的年数返回 LocalDate 实例,用法与plusDays类似。

1.18 minus(long amountToSubtract, TemporalUnit unit): 通过减去给定的数量返回LocalDate实例。

1.19 minus(TemporalAmount amountToSubtract): 通过减去指定的TemporalAmount返回LocalDate实例。

1.20 minusDays(long daysToSubtract): 通过减少指定的天数返回LocalDate实例。

1.21 minusWeeks(long weeksToSubtract): 通过减少指定的周数返回 LocalDate 实例,用法与minusDays相似。

1.22 minusMonths(long monthsToSubtract): 通过减少指定的月数返回 LocalDate 实例,用法与minusDays相似。

1.23 minusYears(long yearsToSubtract): ,通过减少指定的年数返回 LocalDate 实例,用法与minusDays相似。

1.24 with(TemporalAdjuster adjuster): 返回用给定的TemporalAdjuster调整的LocalDate实例。

1.25 with(TemporalField field, long newValue): 将指定字段的LocalDate实例返回到一个新值。

1.26 withDayOfMonth(int dayOfMonth): 通过用给定的值改变月份中的号数来返回LocalDate实例。

1.27 withDayOfYear(int dayOfYear): 通过使用给定值更改一年中的某一天来返回 LocalDate 实例。一年中的第几天的有效值为 1 到 365,闰年的有效值为 1 到 366。

1.28 withMonth(int month): 通过用给定的值改变年的月份来返回LocalDate实例。有效值是1到12。

1.29 withYear(int year): 通过用给定值改变年份来返回LocalDate实例。

1.30 get(TemporalField field): 获取指定字段的int值。

1.31 getChronology(): 获取该日期格式,例如:ISO。

1.32 getDayOfMonth(): 获取一个月中的第几号,为int类型。

1.33 getDayOfWeek(): 获取星期字段,返回DayOfWeek。

1.34 getDayOfYear(): 以 int 格式获取一年中的第几天。它可以返回从 1 到 365 或 366 (闰年)。1.35 getEra(): 获取在此日期适用的时代。例如:"CE "从第一年开始,"BCE "从零年开始。

1.36 getLong(TemporalField field): 获取指定字段的值,返回long类型。

1.37 getMonth(): 从这个日期获取一年中的月份,返回值为Month类型。

1.38 getMonthValue(): 获取月份,取值范围为1-12的int类型。

1.39 getYear(): 获取年份,返回int类型。

1.40 format() 转换格式

1.41 atTime() - 将 LocalDate 与时间结合转化为 LocalDateTime

1.42 atStartOfDay() 将 LocalDate 转化为 LocalDateTime

1.43 isAfter(ChronoLocalDate other): 检查此日期是否在给定日期之后。

1.44 isBefore(ChronoLocalDate other): 检查此日期是否在给定日期之前。

1.45 isEqual(ChronoLocalDate other): 检查此日期是否等于给定日期。


1、LocalDate(jdk1.8)

public final class LocalDate
        implements Temporal, TemporalAdjuster, ChronoLocalDate, Serializable

LocalDate以年月日的格式输出,即yyyy-MM-dd。

我们可以使用LocalDate的下列静态方法来初始化LocalDate。

1.1 now(): 给出LocalDate实例,该实例包含默认时区的系统时钟的当前日期。

LocalDate localDate = LocalDate.now();
System.out.println(localDate); 

输出:

2022-05-06

1.2 now(Clock clock): 提供LocalDate实例,该实例具有从指定时钟获得的当前日期。

LocalDate localDate = LocalDate.now(Clock.systemUTC()); 

 Clock.systemUTC()将返回Clock实例。

1.3 now(ZoneId zone): 给出当前日期的LocalDate实例,该日期来自指定时区的系统时钟。

LocalDate localDate = LocalDate.now(ZoneId.systemDefault()); 

1.4 of(int year, int month, int dayOfMonth): 从给定的年、月、日中获得LocalDate实例,输入数据类型为int。

LocalDate localDate = LocalDate.of(2018, 11, 30); 

 输出为2018-11-30

1.5 of(int year, Month month, int dayOfMonth): 从给定的年(int)、月(Month)和日(int)给出LocalDate实例。

LocalDate localDate = LocalDate.of(2018, Month.NOVEMBER, 30); 

输出为2018-11-30

1.6 ofEpochDay(long epochDay): 从给定的纪元日数中给出LocalDate实例。

LocalDate localDate = LocalDate.ofEpochDay(500); 

 输出为1971-05-16

1.7 ofInstant(Instant instant, ZoneId zone): 从给定的InstantZoneId给出LocalDate实例。

LocalDate localDate = LocalDate.ofInstant(Instant.now(), ZoneId.systemDefault()); 

ofInstantJava 9中被引入。 

1.8 ofYearDay(int year, int dayOfYear): 从给定的年份和年份中的天数给出LocalDate实例,输入数据类型为int

LocalDate localDate = LocalDate.ofYearDay(2018, 02); 

输出为2018-01-02,即2018年第二天的日期。

1.9 parse(CharSequence text): 从给定的文本字符串,如 "2018-10-01",给出LocalDate实例。

LocalDate localDate = LocalDate.parse("2018-10-01"); 

1.10 parse(CharSequence text, DateTimeFormatter formatter): 从给定格式的文本字符串中获得LocalDate实例。输出的LocalDate将是yyyy-MM-dd格式。 

LocalDate localDate = LocalDate.parse("15-03-2018", 
DateTimeFormatter.ofPattern("dd-MM-yyyy")); 

输出为2018-03-15

1.11 from(TemporalAccessor temporal): 从给定的时间对象中获得LocalDate实例。

LocalDate localDate = LocalDate.from(LocalDate.now()); 

 1.12 plus(long amountToAdd, TemporalUnit unit): 通过增加给定的数量返回LocalDate实例。

import java.time.LocalDate;
import java.time.temporal.ChronoUnit;

public class LocalDateDemo {
  public static void main(String[] args) {
	LocalDate localDate1 = LocalDate.now();
	System.out.println(localDate1);
	
	LocalDate localDate2 = localDate1.plus(15, ChronoUnit.DAYS);
	System.out.println(localDate2);
  }
} 
2022-05-06
2022-05-21

在上面的例子中,我们在当前日期中增加了15天。 

1.13 plus(TemporalAmount amountToAdd): 通过添加指定的TemporalAmount返回LocalDate实例。

LocalDate localDate1 = LocalDate.now();
System.out.println(localDate1);
	
LocalDate localDate2 = localDate1.plus(Period.ofDays(15));
System.out.println(localDate2); 

2022-05-06
2022-05-21

在上面的代码中,我们给localDate1增加了15天,得到localDate2作为LocalDate的实例。 

1.14 plusDays(long daysToAdd): 通过添加指定的天数返回LocalDate实例。

LocalDate localDate1 = LocalDate.parse("2018-11-05");
LocalDate localDate2 = localDate1.plusDays(15);
System.out.println(localDate2); 

 输出为2018-11-20

1.15 plusWeeks(long weeksToAdd): 通过添加指定的周数返回 LocalDate 实例,用法与plusDays类似。

1.16 plusMonths(long monthsToAdd): 通过添加指定的月数返回 LocalDate 实例,用法与plusDays类似。

1.17 plusYears(long yearsToAdd): ,通过添加指定的年数返回 LocalDate 实例,用法与plusDays类似。

1.18 minus(long amountToSubtract, TemporalUnit unit): 通过减去给定的数量返回LocalDate实例。

import java.time.LocalDate;
import java.time.temporal.ChronoUnit;

public class LocalDateDemo {
  public static void main(String[] args) {
	LocalDate localDate1 = LocalDate.now();
	System.out.println(localDate1);

	LocalDate localDate2 = localDate1.minus(1, ChronoUnit.DAYS);
	System.out.println(localDate2);
  }
} 

2020-05-06
2020-05-05

在上面的例子中,我们在当前日期中减少了1天。 

1.19 minus(TemporalAmount amountToSubtract): 通过减去指定的TemporalAmount返回LocalDate实例。

LocalDate localDate1 = LocalDate.now();
System.out.println(localDate1);

LocalDate localDate2 = localDate1.minus(Period.ofDays(1));
System.out.println(localDate2); 

输出

2020-05-06
2020-05-05

在上面的代码中,我们给localDate1减少了1天,得到localDate2作为LocalDate的实例。 

1.20 minusDays(long daysToSubtract): 通过减少指定的天数返回LocalDate实例。

LocalDate localDate1 = LocalDate.parse("2018-11-05");
LocalDate localDate2 = localDate1.minusDays(15);
System.out.println(localDate2); 

 输出为2018-10-21

1.21 minusWeeks(long weeksToSubtract): 通过减少指定的周数返回 LocalDate 实例,用法与minusDays相似。

1.22 minusMonths(long monthsToSubtract): 通过减少指定的月数返回 LocalDate 实例,用法与minusDays相似。

1.23 minusYears(long yearsToSubtract): ,通过减少指定的年数返回 LocalDate 实例,用法与minusDays相似。

1.24 with(TemporalAdjuster adjuster): 返回用给定的TemporalAdjuster调整的LocalDate实例。

LocalDate localDate1 = LocalDate.now();
System.out.println(localDate1);
	
LocalDate localDate2 = localDate1.with(DayOfWeek.SUNDAY);
System.out.println(localDate2); 

输出:

2022-05-06
2022-05-08

1.25 with(TemporalField field, long newValue): 将指定字段的LocalDate实例返回到一个新值。

LocalDate localDate1 = LocalDate.now();
System.out.println(localDate1);
	
LocalDate localDate2 = localDate1.with(ChronoField.YEAR, 2017);
System.out.println(localDate2); 

输出

2022-05-06
2017-05-06

在上面的代码中,我们为年份设置了新的值。 

1.26 withDayOfMonth(int dayOfMonth): 通过用给定的值改变月份中的号数来返回LocalDate实例。

LocalDate localDate1 = LocalDate.now();
System.out.println(localDate1);
	
LocalDate localDate2 = localDate1.withDayOfMonth(10);
System.out.println(localDate2); 

输出

2022-05-06
2022-05-10

1.27 withDayOfYear(int dayOfYear): 通过使用给定值更改一年中的某一天来返回 LocalDate 实例。一年中的第几天的有效值为 1365,闰年的有效值为 1366

LocalDate localDate1 = LocalDate.now();
System.out.println(localDate1);
	
LocalDate localDate2 = localDate1.withDayOfYear(110);
System.out.println(localDate2); 

 输出

2022-05-06
2022-04-20

在上面的例子中,我们想在当前日期中设置110。输出的方式是,年不会改变,月和日将从1月开始的第110天中获得。 

1.28 withMonth(int month): 通过用给定的值改变年的月份来返回LocalDate实例。有效值是112

LocalDate localDate1 = LocalDate.now();
System.out.println(localDate1);
	
LocalDate localDate2 = localDate1.withMonth(6);
System.out.println(localDate2); 

输出

2022-05-06
2022-06-06

1.29 withYear(int year): 通过用给定值改变年份来返回LocalDate实例。

1.30 get(TemporalField field): 获取指定字段的int值。

int val = localDate.get(ChronoField.YEAR);
System.out.println(val); 

输出为2018

1.31 getChronology(): 获取该日期格式,例如:ISO

1.32 getDayOfMonth(): 获取一个月中的第几号,为int类型。

1.33 getDayOfWeek(): 获取星期字段,返回DayOfWeek

1.34 getDayOfYear():int 格式获取一年中的第几天。它可以返回从 1365366 (闰年)。
1.35 getEra(): 获取在此日期适用的时代。例如:"CE "从第一年开始,"BCE "从零年开始。

Era val = localDate.getEra(); 

1.36 getLong(TemporalField field): 获取指定字段的值,返回long类型。

1.37 getMonth(): 从这个日期获取一年中的月份,返回值为Month类型。

1.38 getMonthValue(): 获取月份,取值范围为1-12int类型。

1.39 getYear(): 获取年份,返回int类型。

1.40 format() 转换格式

LocalDate 的默认日期格式为 yyyy-MM-ddformat 方法使用指定的格式化程序格式化日期。

找到它的声明。

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

public class LocalDateDemo {
  public static void main(String[] args) {
	LocalDate localDate = LocalDate.parse("2018-02-18");
	String formattedDate = localDate.format(DateTimeFormatter.ofPattern("MMM dd, yyyy"));
	System.out.println(formattedDate);
  }
} 
二月 18, 2018

1.41 atTime() - 将 LocalDate 与时间结合转化为 LocalDateTime

atTime 方法将 LocalDate 与给定时间结合起来,并返回 LocalDateTime 实例。

我们可以将以下参数传递给 atTime 方法。

atTime(int hour, int minute)
atTime(int hour, int minute, int second)
atTime(int hour, int minute, int second, int nanoOfSecond)
atTime(LocalTime time) 
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;

public class LocalDateDemo {
  public static void main(String[] args) {
	LocalDate localDate = LocalDate.parse("2018-05-02");
	System.out.println(localDate);
	
	//hour and minute
	LocalDateTime localDateTime = localDate.atTime(16, 50);
	System.out.println(localDateTime);
	
	//hour, minute and second
	localDateTime = localDate.atTime(16, 50, 20);
	System.out.println(localDateTime);	

	//hour, minute, second and nanoOfSecond	
	localDateTime = localDate.atTime(16, 50, 20, 300);
	System.out.println(localDateTime);	
	
  }
} 

输出

2018-05-02
2018-05-02T16:50
2018-05-02T16:50:20
2018-05-02T16:50:20.000000300

1.42 atStartOfDay() 将 LocalDate 转化为 LocalDateTime

atStartOfDay方法将LocalDate00:00的时间结合起来,在这个日期的开始创建LocalDateTime实例。

为了得到ZonedDateTime实例,我们需要将ZoneId实例传递给atStartOfDay方法。

找到atStartOfDay方法的声明。

LocalDateTime atStartOfDay()
ZonedDateTime atStartOfDay(ZoneId zone) 
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;

public class LocalDateDemo {
  public static void main(String[] args) {
	LocalDate localDate = LocalDate.now();
        LocalDateTime localDateTime = localDate.atStartOfDay();
	System.out.println(localDateTime);
	
	ZonedDateTime zonedDateTime = localDate.atStartOfDay(ZoneId.systemDefault());
	System.out.println(zonedDateTime);	
  }
} 

输出

2022-05-06T00:00
2022-05-06T00:00+08:00[Asia/Shanghai]

我们可以看到,时间值是一天的开始。 

1.43 isAfter(ChronoLocalDate other): 检查此日期是否在给定日期之后。

1.44 isBefore(ChronoLocalDate other): 检查此日期是否在给定日期之前。

1.45 isEqual(ChronoLocalDate other): 检查此日期是否等于给定日期。

import java.time.LocalDate;

public class LocalDateDemo {
  public static void main(String[] args) {
	LocalDate localDate1 = LocalDate.parse("2018-03-18");
	LocalDate localDate2 = LocalDate.parse("2018-05-12");

	System.out.println(localDate1.isAfter(localDate2));
	System.out.println(localDate1.isBefore(localDate2));
	System.out.println(localDate1.isEqual(localDate2));
  }
} 


 

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值