时间类(三)【LacalDate】

三、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);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值