三、LacalDate(jDk8新增)
java.time.LocalDate 是一个不可变( final 修饰)的日期时间对象,是线程安全的,表示日期,通常被表示为年月日。也可以访问其他日期字段,例如日期,星期几和星期
public final class LocalDate
implements Temporal, TemporalAdjuster, ChronoLocalDate, Serializable {
1.字段
LocalDate 中声明了三个字段来存储年、月、日
/**
* The year.
*/
private final int year;
/**
* The month-of-year.
*/
private final short month;
/**
* The day-of-month.
*/
private final short day;
因为它们都是 final 修饰的,因此一旦创建 LocalDate 实例,其 年份、月份、日期 的值再也不能被更改。
另外, LocalDate 类还声明了以下常量:
public static final LocalDate MIN = LocalDate.of( Year.MIN_VALUE, 1, 1
);//-999999999-01-01
public static final LocalDate MAX = LocalDate.of( Year.MAX_VALUE, 12, 31
);//+999999999-12-31
//表示 记元 对应的日期
public static final LocalDate EPOCH = LocalDate.of( 1970, 1, 1 );
2.获取LocalDate实例
public static LocalDate now();
public static LocalDate now(ZoneId zone);
public static LocalDate now(Clock clock);
public static LocalDate of(int year, Month month, int dayOfMonth);
public static LocalDate of(int year, int month, int dayOfMonth);
public static LocalDate ofYearDay(int year, int dayOfYear);
public static LocalDate ofEpochDay(long epochDay);
常用的是 now() 、 of(int year , int month , int dayOfMonth) 、 ofYearDay(int year, int dayOfYear)
示例:
public static void main(String[] args) {
LocalDate date = LocalDate.now();
System.out.println(date);
// 指定日期的 LocalDate 对象
LocalDate date1 = LocalDate.of(2023, 8, 25);
LocalDate date2 = LocalDate.ofYearDay(2023, 237);
System.out.println(date1);
System.out.println(date2);
}
3.方法
方法名 | 返回值类型 | 描述 |
---|---|---|
now() | LocalDate | 返回当前日期。 |
of(int year, int month, int dayOfMonth) | LocalDate | 使用给定的年份、月份和日期创建一个 LocalDate 对象。 |
ofYearDay(int year, int dayOfYear) | LocalDate | 使用给定的年份和年份中的一天创建一个 LocalDate 对象。 |
parse(CharSequence text) | LocalDate | 从字符串解析日期。 |
getYear() | int | 获取年份。 |
getMonth() | Month | 获取月份枚举对象。 |
getMonthValue() | int | 获取月份值(1 到 12)。 |
getDayOfMonth() | int | 获取月份中的日期。 |
getDayOfYear() | int | 获取年份中的一天。 |
getDayOfWeek() | DayOfWeek | 获取星期几的枚举对象。 |
withYear(int year) | LocalDate | 设置年份并返回一个新的 LocalDate 对象。 |
withMonth(int month) | LocalDate | 设置月份并返回一个新的 LocalDate 对象。 |
withDayOfMonth(int dayOfMonth) | LocalDate | 设置月份中的日期并返回一个新的 LocalDate 对象。 |
withDayOfYear(int dayOfYear) | LocalDate | 设置年份中的一天并返回一个新的 LocalDate 对象。 |
plusYears(long yearsToAdd) | LocalDate | 将指定的年数添加到日期并返回一个新的 LocalDate 对象。 |
plusMonths(long monthsToAdd) | LocalDate | 将指定的月数添加到日期并返回一个新的 LocalDate 对象。 |
plusWeeks(long weeksToAdd) | LocalDate | 将指定的周数添加到日期并返回一个新的 LocalDate 对象。 |
plusDays(long daysToAdd) | LocalDate | 将指定的天数添加到日期并返回一个新的 LocalDate 对象。 |
minusYears(long yearsToSubtract) | LocalDate | 从日期中减去指定的年数并返回一个新的 LocalDate 对象。 |
minusMonths(long monthsToSubtract) | LocalDate | 从日期中减去指定的月数并返回一个新的 LocalDate 对象。 |
minusWeeks(long weeksToSubtract) | LocalDate | 从日期中减去指定的周数并返回一个新的 LocalDate 对象。 |
minusDays(long daysToSubtract) | LocalDate | 从日期中减去指定的天数并返回一个新的 LocalDate 对象。 |
isEqual(LocalDate other) | boolean | 检查日期是否与另一个日期相等。 |
isBefore(LocalDate other) | boolean | 检查日期是否在另一个日期之前。 |
isAfter(LocalDate other) | boolean | 检查日期是否在另一个日期之后。 |
isLeapYear() | boolean | 检查年份是否是闰年。 |
lengthOfMonth() | int | 获取该月份的天数。 |
lengthOfYear() | int | 获取该年份的天数。 |
toString() | String | 将日期转换为字符串表示形式。 |
with(TemporalAdjuster adjuster) | LocalDate | 使用指定的调整器调整日期并返回一个新的 LocalDate 对象。 |
with(TemporalField field, long newValue) | LocalDate | 使用指定的字段和值调整日期并返回一个新的 LocalDate 对象。 |
示例:
- 获取时间
public static void main(String[] args) {
LocalDate ld = LocalDate.now();
System.out.println(ld);
//设置时间
ld = LocalDate.of(2008, Month.AUGUST, 8);
System.out.println(ld);
ld = LocalDate.of(2008, 8, 8);
System.out.println(ld);
ld = LocalDate.ofYearDay(2002, 222);
System.out.println(ld);
//年份
int y = ld.getYear();
System.out.println(y);
//月份
Month m = ld.getMonth();
System.out.println(m);
//月份数字
int m1 = ld.getMonthValue();
System.out.println(m1);
//一年的第几天
int doy = ld.getDayOfYear();
System.out.println(doy);
//一月的第几天
int d = ld.getDayOfMonth();
System.out.println(d);
//周几
DayOfWeek w = ld.getDayOfWeek();
System.out.println(w);
//是否是闰年
boolean isLeapYear = ld.isLeapYear();
System.out.println(isLeapYear);
//一年一共多少天
int days = ld.lengthOfYear();
System.out.println(days);
//月一共多少天
int ds = ld.lengthOfMonth();
System.out.println(ds);
}
- 增加、减少
public static void main(String[] args) {
LocalDate date = LocalDate.now();
System.out.println(date);
LocalDate plusYear = date.plusYears(5);
// 10 年前
LocalDate minusYear = date.minusYears(10);
LocalDate minusYear1 = date.plusYears(-10);
System.out.println(minusYear);
System.out.println(minusYear1);
//五月后
LocalDate plusMonth = date.plusMonths(5);
System.out.println(plusMonth);
// 5 月前
LocalDate minusMonth = date.minusMonths(5);
System.out.println(minusMonth);
LocalDate minusMonth1 = date.plusMonths(-5);
System.out.println(minusMonth1);
}