首页 > 编程语言 >学习笔记-Java8新特性-第七节-新时间与日期API

学习笔记-Java8新特性-第七节-新时间与日期API

时间:2023-05-21 23:22:42浏览次数:52  
标签:05 2023 System API 第七节 LocalDateTime println Java8 out

新时间与日期API

本地时间

  • LocalDate

  • LocalTIme

  • LocalDateTime

简介

  • 人读的时间

  • 提供以ISO-8601为标准的日期和时间

  • 提供简单的日期或时间

  • 并不包含当前的时间信息

  • 也不包含与时区相关的信息

示例

    public void test1() {
        LocalDateTime localDateTime = LocalDateTime.now();
        System.out.println(localDateTime);
        // 2023-05-18T15:01:52.140

        LocalDateTime localDateTime1 = LocalDateTime.of(2023, 5, 18, 14, 59, 10);
        System.out.println(localDateTime1);
        // 2023-05-18T14:59:10

        LocalDateTime localDateTime2 = localDateTime.plusYears(2);
        System.out.println(localDateTime2);
        // 2025-05-18T15:01:52.140

        LocalDateTime localDateTime3 = localDateTime.minusMinutes(2);
        System.out.println(localDateTime3);
        // 2023-05-18T14:59:52.140

        System.out.println(localDateTime1.getYear() + " "
                        + localDateTime1.getMonth() + " "
                        + localDateTime1.getDayOfMonth() + " "
                        + localDateTime1.getHour() + " "
                        + localDateTime1.getMinute() + " "
                        + localDateTime1.getSecond()
                );
        // 2023 MAY 18 14 59 10
    }

时间戳

Instant

简介

  • 计算机读的时间

  • 以Unix元年(1970年1月1日 00:00:00)到某个时间之间的毫秒值

  • 默认获取UTC的时间

示例

    @Test
    public void test2() {
        Instant instant = Instant.now();
        System.out.println(instant); // 2023-05-18T07:17:56.307Z

        // 获取差8个时区的时间偏移量
        OffsetDateTime odt = instant.atOffset(ZoneOffset.ofHours(8));
        System.out.println(odt); // 2023-05-18T15:17:56.307+08:00

        // 转成毫秒时间
        System.out.println(instant.toEpochMilli()); // 1684394382019

        // 基于元年做运算
        Instant instant1 = Instant.ofEpochSecond(60);
        System.out.println(instant1); // 1970-01-01T00:01:00Z

    }

间隔

  • Duration

    • 两个时间之间的间隔
  • Period

    • 两个本地日期之间的间隔

示例

    public void test3() {
        Instant instant = Instant.now();

        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            System.out.println("醒了");
        }

        Instant instant1 = Instant.now();

        Duration duration = Duration.between(instant, instant1);
        System.out.println(duration.toMillis()); // 1002

        System.out.println("----------------------");

        LocalDate localDate = LocalDate.of(2015, 1, 1);
        LocalDate localDate1 = LocalDate.now();

        Period period = Period.between(localDate, localDate1);
        System.out.println(period); // P8Y4M17D
    }

时间矫正器

  • TemporalAdjuster

    • 时间矫正器

    • 比如,将日期调整到下一个周日

  • TemporaAdiusters

    • 通过静态方法提供了大量的常用TemporalAdjuster

示例

    public void test5() {
        LocalDateTime localDateTime = LocalDateTime.now();
        System.out.println(localDateTime); // 2023-05-18T15:52:42.128

        // 将日期改成这个月的第十天
        LocalDateTime localDateTime1 = localDateTime.withDayOfMonth(10);
        System.out.println(localDateTime1); // 2023-05-10T15:52:42.128

        // 将时间调整到下个周五
        LocalDateTime localDateTime2 = localDateTime.with(TemporalAdjusters.next(DayOfWeek.FRIDAY));
        System.out.println(localDateTime2); // 2023-05-19T15:52:42.128

        //自定义:下一个工作日
        LocalDateTime localDateTime4 = localDateTime.with((l) -> {
            LocalDateTime localDateTime3 = (LocalDateTime) l;
            if (localDateTime3.getDayOfWeek() == DayOfWeek.SATURDAY
                    || localDateTime3.getDayOfWeek() == DayOfWeek.FRIDAY) {
                return localDateTime3.with(TemporalAdjusters.next(DayOfWeek.MONDAY));
            } else {
                return localDateTime3.plusDays(1);
            }
        });
        System.out.println(localDateTime4); // 2023-05-19T15:52:42.128

    }

时间格式化

DateTimeFormatter

示例

    public void test6() {
        DateTimeFormatter isoDate = DateTimeFormatter.ISO_DATE;
        LocalDateTime localDateTime = LocalDateTime.now();
        System.out.println(localDateTime); // 2023-05-18T16:04:52.139

        String strDate = localDateTime.format(isoDate);
        System.out.println(strDate); // 2023-05-18

        // 自定义
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        strDate = localDateTime.format(dateTimeFormatter);
        System.out.println(strDate); // 2023-05-18

        // 从字符串获取日期
        LocalDate localDate = LocalDate.parse(strDate, dateTimeFormatter);
        System.out.println(localDate); // 2023-05-18

    }

时区

  • ZoneDate

  • ZoneTime

  • ZoneDateTime

示例

    public void test8() {
        // 获得上海的时间
        LocalDateTime shanghai = LocalDateTime.now(ZoneId.of("Asia/Shanghai"));
        System.out.println(shanghai); // 2023-05-18T16:14:02.221
        // 带时区的时间
        ZonedDateTime shanghaiWithZone = shanghai.atZone(ZoneId.of("Asia/Shanghai"));
        System.out.println(shanghaiWithZone); // 2023-05-18T16:14:02.221+08:00[Asia/Shanghai]
    }

标签:05,2023,System,API,第七节,LocalDateTime,println,Java8,out
From: https://www.cnblogs.com/Andl-Liu/p/17419460.html

相关文章

  • 学习笔记-Java8新特性-第三节-方法引用与构造器引用
    方法引用与构造器引用什么是方法引用对方法的引用若Lambda体中的内容,已经有方法实现了,我们可以使用该方法的方法引用作为替代已经有方法实现了是指,该方法的参数列表和返回值类型和lambda的一致可以将方法引用理解成Lambda表达式的另外一种表现形式语法格式对象......
  • 学习笔记-Java8新特性-第二节-Lambda表达式
    Lambda表达式Lambda表达式是什么Lambda是一个匿名函数是一段可以传递的代码是一种语法糖使用Lambda可以写出更简洁、更灵活的代码如果要使用Lambda表达式,需要函数式接口的支持Lambda的语法格式基础语法Java8中引入了一个新的操作符->称为箭头操作符或La......
  • APIO2023 游记
    5.18报到。排队时面到了DitaMirika神仙/se/se和_•́へ•́╬_住一个房间。不过他应该不认识我。晚上_•́へ•́╬_和群友出去玩了。而我和asdfz的另外几位神仙打了一晚上牌。5.19上午讲字符串。这是我能听懂的东西吗。电脑保养得不好,现在续航不到1h,所以也没带......
  • APIO 2023 线上游记
    2023/5/17润回上海,面基计划被迫取消了。真难过。话说我好像是第一次一个人坐火车,感觉很棒,虽然感觉少了很多流程,比如kfc()睡大觉。2023/5/18模拟赛,峰老师的信心场,打的还行,但是排名不高,下分了。larryzhong6500了,真有趣。下午乱做了点题,通关了Patrick'sParabox,然后开摆......
  • fastapi最简单使用示例
    直接上代码了fromfastapiimportFastAPI,Requestimportuvicornapp=FastAPI()@app.post("/")asyncdefcreate_item(request:Rquest):json_post_raw=awaitrequest.json()#下面的代码就是根据取得的数据进行自己的相应解析answer={这里自己填......
  • Openresty 学习笔记(二)Nginx Lua 正则表达式相关API
    ngx.re.match语法: captures,err=ngx.re.match(subject,regex,options?,ctx?,res_table?)环境: init_worker_by_lua*,set_by_lua*,rewrite_by_lua*,access_by_lua*,content_by_lua*,header_filter_by_lua*,body_filter_by_lua*,log_by_lua*,ngx.timer.*,balancer......
  • requests: 基本使用、get、post、代理、cookie案例、超级鹰打码api
    1、requests_1_基本使用""".-''-..--._..._.'.-.)|__|......
  • 使用API数据接口获取商品详情数据的流程
    API数据接口是开发者获取第三方平台数据的一种方式,使用API接口可以快速地获取海量的商品详情数据,相比其他方式更加高效、实时。下面将介绍使用API数据接口获取商品详情数据的主要流程和步骤:申请API密钥服装打折网站在使用基于淘宝商品数据的API时,需要首先在淘宝开放平台申......
  • ChatGpt API接口技术对接教程
    背景:从去年十二月份到现在,chatgpt火了很长一段时间,是继Copliot之后又一个智能AI机器人,而且他的功能不限于写代码,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,真正像人类一样来聊天交流,甚至能完成撰写邮件、视频脚本、文案、翻译、代码,写论文等任务。引用......
  • CCS提示: error #10008-D: cannot find file "Flash28335_API_V210.1ib
    1. 问题描述     2. 解决措施   在CCS安装路径下的库文件中没有"Flash28335_API_V210.1ib"这个文件。   把Flash28335_API_V210.1ib这个文件放到你ccs的安装路径下   类似如下所示的文件夹:      ......