LocalDate

package com.ydlclass.date;

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

/**
 * 本地时间Api
 * 对获取本地时间十分友好
 */
public class LoacalDateTest {
    public static void main(String[] args) {
        LocalDate now = LocalDate.now();
//        System.out.println(now);//本地化输出时间,月份不需要在加1
        int i = now.lengthOfYear();//获取本年多少天
        int year = now.getYear();
        int monthValue = now.getMonthValue();
        LocalDate plus = now;
        if (now.isSupported(ChronoUnit.DAYS)){//可以使用这个方法来判断是否支持这个字段
             plus = now.plus(5, ChronoUnit.DAYS);//和Instant类很像的api方法调用
        }
        //定时任务,例如三年,三月,三周,三天后该做什么事情,使用这个方法用于定时
        LocalDate localDate = now.withMonth(12);//返回一个本地时间副本,这个本地时间的月份是修改后的
        //withmonth()方法,这个方法首先判断传入的月份的数值是否和当前实际月份相同,如果相同就直接返回当前时间,不同后会判断传入的数值是否满足
        //月份的合理数值范围内,如果传入的数值在判断的合理范围内,就会抛出,异常

        //例如将这里的时间改为13,LocalDate localDate = now.withMonth(13);//可以理解with是修改的的意思

        /**
         * 将会抛出如下的异常信息
         * Exception in thread "main" java.time.DateTimeException: Invalid value for MonthOfYear (valid values 1 - 12): 13
         * 	at java.base/java.time.temporal.ValueRange.checkValidValue(ValueRange.java:311)
         * 	at java.base/java.time.temporal.ChronoField.checkValidValue(ChronoField.java:717)
         * 	at java.base/java.time.LocalDate.withMonth(LocalDate.java:1104)
         * 	at com.ydlclass.date.LoacalDateTest.main(LoacalDateTest.java:22)
         */
        System.out.println("year1:");
        int year1 = now.getYear();
        System.out.println(year1);
        System.out.println("I1:");
        int i1 = now.get(ChronoField.YEAR);//get方法是获取时间的字段,这里的功能和前面使用getyear()方法很像,但是get方法能够获取到更多的字段
        System.out.println("ALIGNED_DAY_OF_WEEK_IN_MONTH:");
        int i2 = now.get(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR);//直接使用可能会抛出异常,原因是get方法中就不支持这个字段的获取。
        //对齐函数,,这个函数的实现其实就是判断当前这一天,如果在今年第一天和一周七天中的第一天开始对齐是,当下日期是周几,这就是对齐的实现
        //无论是天以月内对齐,还是天以年内对齐,这两种方式的实现是分别获取当前日期在这个月内的第几天(当前日期在今年内的第几天),天数减一对7取余后,再加1
        //以此获得对齐后的星期几的情况,这种方式还长见于其他语言中的内存对齐等,其他需要对齐的地方。
        System.out.println(i2);

        System.out.println(i1);



        System.out.println(localDate);

        System.out.println(plus);

        System.out.println(monthValue);

    }

}

全部评论

相关推荐

投递字节跳动等公司10个岗位
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务