JDK1.8新的日期类,Lambda表达式

Windows 64位系统中的JDK8完全指南 Java Development Kit,简称JDK,是Java程序设计语言的软件开发工具包,它为Java开发者提供了编写、编译和运行Java应用程序所需的软件和工具。JDK不仅是Java开发的基础,也是整个Java技术生态系统的核心。JDK的版本迭代不断带来新的特性和性能优化,它使得开发者能够构建功能强大的应用程序,满足从企业级应用到移动应用等多方面的需求。 阅读详情

JDK1.8新特性

时间日期类

  1. 新增一套新的时间日期API

    1. Date,Calender的时间日期可能出现线程不安全,因此就出现了新的日期类
    2. LocalDate:表示年月日的类
    3. LocalTime:时分秒的类
    4. LocalDateTmie:年月日,时分秒的类
  2. Instant类:获取从1970.1.1.零时到现在的美国时区的毫秒值

    1. 得到的时间是美国时区,我们可以设置偏移量。
    2. 时区编号类:ZoneId类,可以获取时区
  3. 注意细节:如果用LocalDateTime 想按照我们的自定义的格式去解析,注意日期字符串的 年月日时分秒要写全,不然就报错

  4. .添加年月日时分秒的方法 plus系列的方法 都会返回一个新的LocalDateTime的对象

    ​ LocalDateTime localDateTime = ldt.plusYears(1);
    ​ LocalDateTime localDateTime1 = ldt.plusMonths(3);
    ​ LocalDateTime localDateTime2=ldt.plusHours(10);

  5. 减去年月日时分秒的方法 minus 系列的方法 注意都会返回一个新的LocalDateTime的对象
    例如:LocalDateTime localDateTime2 = ldt.minusYears(8);

  6. 指定年月日时分秒的方法 with系列的方法 注意都会返回一个新的LocalDateTime的对象
    例如 LocalDateTime localDateTime3 = ldt.withYear(1998);
    //获取这个月的第几个星期几是几号,比如 TemporalAdjusters.dayOfWeekInMonth(2, DayOfWeek.FRIDAY) 代表的意思是这个月的第二个星期五是几号
    // TemporalAdjusters.dayOfWeekInMonth(2, DayOfWeek.FRIDAY)
    LocalDateTime with1 = now.with(TemporalAdjusters.dayOfWeekInMonth(2,DayOfWeek.FRIDAY));

/*Author:LH
CreatTime:2020.06.24.16:43*/

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class MyLocalDate {
    public static void main(String[] args) {
//        获取当前的时间(输出格式:2020-06-24T16:43:55.660043)
        LocalDateTime now = LocalDateTime.now();
        System.out.println(now);
//        获取日期
        System.out.println(now.getDayOfMonth());
//        获取星期日期
        System.out.println(now.getDayOfWeek());
//        获取一年中的第几天
        System.out.println(now.getDayOfYear());
        System.out.println("++++++++++");
        System.out.println(now.getMinute());
        System.out.println(now.getYear());
        System.out.println(now.getMonth());
//        将日期格式化成指定的字符串
        String format = now.format(DateTimeFormatter.ofPattern("yyyy,MM,dd  HH,mm,ss"));
        System.out.println(format);
        System.out.println("=========");
//        LocalDateTime转化成LocalDate,LocalTime
        System.out.println(now.toLocalDate());
        System.out.println(now.toLocalTime());
        System.out.println("======");
//        指定日期获取日期对象
        LocalDateTime time = LocalDateTime.of(2019, 9, 13, 13, 25, 59);
        System.out.println(time);
//        将指定字符日期解析成日期对象,注意要用英文标点,日期和时间之间用T隔开
        LocalDateTime parse = LocalDateTime.parse("1996-08-12T13:14:39");
        System.out.println(parse);
//        判断是否在一个日期之前
        boolean b = parse.isBefore(now);
        System.out.println(b);
//        判断一个日期是否在一个日期之后
        boolean after = parse.isAfter(now);
        System.out.println(after);

    }
}
/*Author:LH
CreatTime:2020.06.24.17:40*/

import java.time.Instant;
import java.time.OffsetDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.util.Set;

public class Istance {
    public static void main(String[] args) {
//        时间戳类,获取当前美国的时间
        Instant now = Instant.now();
        System.out.println(now);
//        获取从元年到现在的秒值
        System.out.println(now.getEpochSecond());
//        获取从元年到现在的毫秒值
        System.out.println(now.toEpochMilli());
        System.out.println("==========");
//        给获取到的日期增加偏移量,获取中国时间
        OffsetDateTime time = now.atOffset(ZoneOffset.ofHours(8));
        System.out.println(time);
//        获取默认系统时间的时区
        ZoneId zoneId = ZoneId.systemDefault();
        System.out.println(zoneId);
//        获取所有的时区
        Set<String> zoneIds = ZoneId.getAvailableZoneIds();
        zoneIds.forEach(s -> System.out.println(s));

//        给计算机元年增加秒数/增加毫秒值 ofEpochMilli() 给计算机元年增加毫秒数
        Instant instant = Instant.ofEpochSecond(60 * 60 * 8);
        System.out.println(instant);
    }
}

Duration类

  1. 用于计算两个时间间隔的类

Period类

  1. 计算两个日期间隔的类
/*Author:LH
CreatTime:2020.06.24.18:07*/

import java.time.LocalDate;
import java.time.LocalTime;
import java.time.Period;

public class Duration {
    public static void main(String[] args) {
//        求另个日期之间的间隔
        LocalDate now = LocalDate.now();
        System.out.println(now);
        LocalDate parse = LocalDate.parse("1996-09-25");
        System.out.println(parse);
        Period between = Period.between(now, parse);
        System.out.println(between);
//        求两个时间的间隔
        LocalTime time = LocalTime.now();
        LocalTime time1 = LocalTime.parse("08:00:00");
        java.time.Duration between1 = java.time.Duration.between(time, time1);
        System.out.println(between1);
    }
}

TemporalAdjuster 接口

  1. 时间矫正器接口,我们常用这个指定一些日期。

  2. /*Author:LH
    CreatTime:2020.06.24.22:03*/
    
    import java.time.DayOfWeek;
    import java.time.LocalDateTime;
    import java.time.temporal.Temporal;
    import java.time.temporal.TemporalAdjusters;
    
    public class TemporalAdjuster  {
        public static void main(String[] args) {
            LocalDateTime now = LocalDateTime.now();
            System.out.println(now);
    //        获取本月最后一天
            LocalDateTime with = now.with(TemporalAdjusters.lastDayOfMonth());
    //        获取下一个星期五是几号
            LocalDateTime with1 = now.with(TemporalAdjusters.next(DayOfWeek.FRIDAY));
            System.out.println(with);
            System.out.println(with1);
    
    //        下个工作日是几号
            LocalDateTime time = LocalDateTime.now();
            System.out.println(time.with(new java.time.temporal.TemporalAdjuster() {
                @Override
                public Temporal adjustInto(Temporal temporal) {
                    LocalDateTime dateTime = (LocalDateTime) temporal;
                    DayOfWeek dayOfWeek = dateTime.getDayOfWeek();
                    if (dayOfWeek.equals(DayOfWeek.FRIDAY)) {
                        return dateTime.plusDays(3);
                    } else if (dayOfWeek.equals(DayOfWeek.SATURDAY)) {
                        return dateTime.plusDays(2);
                    } else {
                        return dateTime.plusDays(1);
                    }
                }
            }));
        }
    }
    

DateTimeFormatter

  1. 获取对象的方式,通过静态方法ofPattern(“yyyy-MM-dd”);
    DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern(“yyyy-MM-dd”);
    LocalDateTime now = LocalDateTime.now();

  2. format()方法把一个日期对象的默认格式 格式化成指定的格式
    String format1 = dateFormat.format(now);
    System.out.println(format1);

  3. 格式化日期 方式2使用日期类中的format方法 传入一个日期格式化类对象

  4. 使用自定义的日期格式格式化字符串
    DateTimeFormatter timeFormat = DateTimeFormatter.ofPattern(“yyyy-MM-dd HH:mm:ss”);//自定义一个日期格式
    String time = now1.format(timeFormat);
    System.out.println(time);

  5. 把一个日期字符串转成日期对象
    使用日期类中的parse方法传入一个日期字符串,传入对应的日期格式化类
    DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern(“yyyy-MM-dd”);
    LocalDateTime parse = LocalDateTime.parse(time, timeFormat);
    System.out.println(parse);

Lambda表达式

  1. 可以对匿名内部类简写,简化代码。
  2. 表达式语法:
    • 箭头符号:->,这个符号将表达式分为左右两部分。
    • 左边:是你实现的这个接口中的抽象方法的形参列表。
    • 右边:你对这个抽象方法实现的具体逻辑
  3. 右边的逻辑只有一句,大括号可以省略。
  4. 左边一个参数,小括号就可以省略。
  5. 左边的数据类型也可以省略。
作为参数传递
  1. 快捷方法:可以先写成正常的匿名内部类,alt+enter转换成lambda表达式。
Lambda表达式注意事项
  1. 需要函数式接口的支持
    • 什么是函数式接口:接口里面只有一个抽象方法,@FunctionalInterface 可以检测是否是函数式接口。

代码:

  获取所有的时区
        Set<String> zoneIds = ZoneId.getAvailableZoneIds();
        zoneIds.forEach(s -> System.out.println(s));
Ultrascale/Ultrascale+ FPGA GTH IP及结构详解(一) FPGA GTH Transceiver 阅读详情

相关推荐

xHCI驱动学习(1) 核心数据结构

虽然Linux内核拥有C语言构建的身体,但它骨子里散发的是面向对象的气质,这一个个的对象就是struct。面对一个内核模块的时候,首先要找出关键的struct和它们之间的关系,才能摸清代码的骨骼脉络。今天来理清USB xHCI相关的数据结构类型usb_hcd、xhci_hcd、hc_driver和全局变量xhci_pci_driver、xhci_hc_driver、xhci_pci_hc_driver之间的关系。

1万+

【Java 8 新特性】Java LocalDateTime 和 Epoch 互相转换

Java LocalDateTime 和时间戳互相转换1. LocalDateTime 转 Epoch1.1 LocalDateTime 转纪元秒1.2 LocalDateTime 转纪元毫秒2. Epoch 转 LocalDateTime2.1 使用 LocalDateTime.ofEpochSecond() 将 Epoch 转换为 LocalDateTime2.2 使用 Instant 将 Epoch 转换为 LocalDateTime2.3 使用 Timestamp 将 Epoch 转换为 Local

猫巳的博客 1万+

Mid-360激光雷达与Fast-LIO2实战:从环境搭建到实时点云建图

本文提供Livox Mid-360激光雷达与Fast-LIO2算法从零开始的实战教程。详细介绍了在Ubuntu和ROS环境下进行系统配置、依赖安装、硬件连接与网络设置的完整流程,并指导如何运行算法实现实时点云建图与可视化,最后总结了关键参数调优与常见问题排查方法。

weixin_29300241的博客 152

2021-01-22

获取网络标准时间出错 LocalDateTime.ofEpochSecond(ld,0, ZoneOffset.ofHours(8)); 转换成LocalDateTime时出错,日期和本地时间对不上,连年份和月份都对不上。 原因: 获取的时间戳需要除以1000 /** * 从中国科学院国家授时中心获取标准时间 * @return */ public static LocalDateTime standardTime(){ t..

SimpleCow的博客 451

从零开始:使用Python实现基于深度强化学习的柔性车间调度系统

本文详细介绍了如何使用Python和深度强化学习(DRL)构建柔性车间调度系统,特别关注图神经网络(GNN)与近端策略优化(PPO)算法的结合应用。通过实战指南,读者将学习从环境准备、异构图构建到PPO算法实现的全流程,最终实现生产效率的显著提升。

weixin_29074295的博客 244

树莓派4B学习笔记(5)—— 来个GPIO操作吧

一. GPIO库介绍 对于树莓派,现在有wiringPi,BCM2835,python三种库可以使用。 python 开发语言:python 简单介绍:树莓派官方资料中推荐且容易上手,毫无疑问的说python非常适合树莓派,树莓派也非常适合python。 wiring PI 开发语言:C、C++ 简单介绍:功能很强大,适合那些具有C语言基础,在接触树莓派之前已经接触过单片机或者嵌入式开发的人群。wiring Pi的API函数和arduino非常相似,且作者也给出了很多示例代码,这也使得它广受欢迎。

weixin_44415639的博客 8754

day13 日期与时间 包装类 array lambda表达式

最近有些事,只能填充了部分内容,后续内容慢慢更新

weixin_52346838的博客 210

信号与电源完整性5:轨道塌陷噪声/电源轨道噪声分析及降低解决方案

经过上一节关于串扰的分析,我们已经清楚,噪声问题不仅仅来源于信号网络;电源和地网络所产生的噪声,被反馈到其所在的元器件和信号网络时,其破坏力也是巨大的;本节所讨论的轨道塌陷噪声就是一个典型的实例。在经过电源的地网络的电流发生改变时,在电源和地之间的阻抗上将产生一个压降;由于该压降的产生,用电元件的电压将直接被拉低,甚至可能对电路产生功能性的错误。接下来硬小二将详细的分析电源轨道噪声和降低其的解决方法。...

fydar的博客 2241

java 根据类名示例化类_Java LocalDateTime类| EpochSecond()方法的示例

java 根据类名示例化类 EpochSecond()方法的LocalDateTime类 (LocalDateTime Class ofEpochSecond() method) ofEpochSecond() method is available in java.time package. ofEpochSecond()方法在java.time包中可用。 ofEpochSecond() m...

cumt30111的博客 2990

1.14、基于NARX神经网络的磁悬浮建模(matlab)

数据准备:首先,需要准备用于训练和测试的磁悬浮系统的输入和输出数据,包括磁力、电流、位置、速度等信息。数据可以被保存在MATLAB的数据文件中,并加载到工作空间中。使用MATLAB的神经网络工具箱,创建一个NARX神经网络。需要定义网络的层次结构、节点数、激活函数等参数。通常,NARX网络包括自回归层和外部输入层。数据预处理:对加载的数据进行预处理,包括去除噪声、归一化处理等操作,以确保数据质量和网络训练的稳定性。使用MATLAB的训练函数,如trainlm或者trainbr,对NARX神经网络进行训练。

XU157303764的博客 1998

Python爬虫实战:抓取CVE安全漏洞数据库

在网络安全领域,CVE(Common Vulnerabilities and Exposures)是一个非常重要的安全漏洞字典,它为每个安全漏洞提供了唯一的标识符。安全研究人员、开发人员和系统管理员都需要及时了解最新的CVE信息,以便采取相应的防护措施。本文将详细介绍如何使用Python爬虫技术从专业CVE网站抓取漏洞数据,并构建一个完整的CVE信息采集系统。本文详细介绍了如何使用Python爬虫技术从专业CVE网站抓取安全漏洞数据。多种爬虫技术反爬虫策略:User-Agent轮换、代理IP、请求延迟。

2201_76125261的博客 367

深入了解Java8新特性-日期时间API:LocalDateTime类

LocalDateTime 是 Java 8 中引入的一个新的日期时间 API,它表示一个没有时区的日期时间对象,是不可变且线程安全的。LocalDateTime 通常用于需要同时表示日期和时间,但不涉及时区的场景。LocalDateTime、LocalDate和LocalTime都是Java中用于表示日期和时间的数据类型,但它们在功能和使用上有一些重要的区别。在使用 LocalDateTime 时,有一些注意事项需要特别注意,了解这些限制和注意事项可以确保正确有效地使用它

凡夫编程 3680

可控异常的契约化设计:在 ABAP 中用 CX_STATIC_CHECK 把可预期错误变成接口的一部分

文章摘要: 本文探讨了ABAP系统中异常处理的工程化设计原则,强调将可预期的业务异常作为接口契约的一部分。核心观点是:对于调用方能够合理处理的错误情况,应使用继承自CX_STATIC_CHECK的受检异常,通过方法签名强制调用方处理或显式转发。文章对比了ABAP三大异常根类的适用场景,提出"三问法"判断异常是否适合受检处理,并给出了包含上下文信息的异常类实现示例。通过Fiori文件上传案例,展示了如何在分层架构中合理传递和转换异常,最终在OData服务层将业务异常映射为标准错误响应。这种

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 3064

Java版本:JDK8的十大新特性介绍

JDK8新特性: 1.Lambda表达式 2.新的日期API 3.引入Optional 4.使用Base64 5.接口的默认方法和静态方法 6.新增方法引用格式 7.新增Stream类 8.注解相关的改变 9.支持并行(parallel)数组 10.对并发类(Concurrency)的扩展。 ...

ZytheMoon的博客 5万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

【Java学习】-Java JDK 1.8与17版本比较

JDK 1.8和17版本都是Java平台的重要里程碑,它们的发展历史和地位各有特点。JDK 1.8引入了Lambda表达式和Stream API等功能,提升了开发效率和编程体验;而JDK 17则在语言特性、性能和安全性方面进行了更多的改进和优化。无论是选择稳定成熟的JDK 1.8,还是追求最新功能和性能的JDK 17,都能够满足不同场景下的开发需求。

喵喵喵喵~我是一个程序员而已 4万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

JDK1.8新增功能:线程安全的时间日期类;Lambda表达式;Stream流

文章目录JDK1.8新增功能一、时间日期类1、LocalDate;LocalTime;LocalDateTime类2、Instant 时间戳类3、Duration和Period4、TemporalAdjuster(接口)5、ZonedDate,ZonedTime,ZonedDateTime:带时区的时间或日期6、ZoneID 世界时区类二、Lambda表达式Java给我们提供的函数式接口形式一形式...

y_Engineer的博客 1162

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

JDK8的十大新特性

JDK8的十大新特性

kouguoguo的博客 8946

JDK1.8新特性

速度更快 - 优化底层源码,比如HashMap、ConcurrentHashMap代码更少 - 添加新的语法Lambda表达式强大的Stream API便于并行最大化减少空指针异常 - OptionalLambda是一个匿名函数(方法), 允许把函数作为一个方法的参数。利用Lambda表达式可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升。一般都是优化匿名内部类。

abuyyds的博客 839

JDK8与JDK11

文章目录前言一、Java8的新特性Lambda 表达式方法引用函数式接口实例Java 8 默认方法StreamOptional 类Nashorn JavaScript日期时间 APIBase64二、Java11的新特性ZGCFlight Recorder(JFR)Low-Overhead Heap ProfilingHTTP/2 Client APITransport Layer Security (TLS) 1.3Improve Aarch64 IntrinsicsEpsilon: A No-Op Gar

yzd524850313的博客 1万+

1.8中的时间类,Lambda表达式

今天学习了一点JDK1.8的新东西。 时间日期的API 在JDK1.8新增了一套全新的时间日期API,它在java.time包下。其中有: 年月日 LocalDate 时分秒 LocalTime 年月日时分秒 LocalDateTime 1,上面3种都采用静态方法now获取当前的日期时间 LocalDateTime now = L...

Hgrtea的博客 858

JDK8新特性介绍

JDK8新特性介绍 JDK8新特性: ​ 1,Lambda表达式 ​ 2,新的日期API ​ 3,引入Optional ​ 4,使用Base64 ​ 5,接口的默认方法和静态方法 ​ 6,新增方法引用格式 ​ 7,新增Stream类 ​ 8,注解相关的改变 ​ 9,支持并行(parallel)数组 ​ 10,对并发类(Concurrency)的扩展。 1,Lambda表达式 Lambda 表...

偏偏爱吃梨的博客 1768

Java8 Lambda表达式 和 函数式编程 原理详解

前言 1、前言   Java8既JDK1.8。Lambda表达式是Java8的新特性,除此之外Java8还提供了其他新特性,比如:函数式编程、方法引用、Stream、Optional类、默认方法、新的日期类型、Base64、Nashorn, JavaScript 引擎。   本篇详细介绍Lambda表达式,其他的后续慢慢介绍。   它是一个语法糖,糖是甜的,但是对于初学者并不是,当你熟悉之后,你会发现,它是真的香。   Lambda表达式的初衷是,进一步简化匿名类的语法(不过实现上,Lambda表达

Curry4ever 2757

运用 JDK8 中的核心新特性

JDK8新特性:1)引入了 Lambda 表达式 2)引入了日期类、接口默认方法、静态方法 3)新增 Stream 流式接口 4)引入 Optional 类 5)新增了 CompletableFuture 等并发实现类。

天天的博客 1416

2.JDK1.8(Java 8)的新特性

用元空间代替了永久代 引入了Lambda表达式 引入了日期类、接口默认方法、静态方法 新增Stream流式接口 引入了Optional类 新增了CompletableFeture、StampedLock等并发实现类 修改了HashMap、ConcurrentHashMap的实现

m0_69435612的博客 1503

万字详解,JDK1.8的Lambda、Stream和日期的使用详解

本文来源:http://8rr.co/Nn5n前言本篇主要讲述是Java中JDK1.8的一些新语法特性使用,主要是Lambda、Stream和LocalDate日期的一些使用讲解。Lam...

Java知音 1485

JDK1.8新特性(常用语法及测试)

本文主要介绍了JDK1.8版本中的一些常用新特性。分别是: Lambda表达式、函数式接口、 方法的引用、 Optional类、 Stream Api(流式编程)、 新日期时间类。还有部分常见的使用方式的测试代码。

执笔写JAVA 762
上一篇: 反射机制/动态代理/枚举/类的加载过程
下一篇: Stream流
一天3顿饭
博客等级 码龄7年 6粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值