高级JAVA开发必备技能:java8 新日期时间API((二)JSR-310:常用的日期时间API)(JAVA 小虚竹)

简介: 高级JAVA开发必备技能:java8 新日期时间API((二)JSR-310:常用的日期时间API)(JAVA 小虚竹)

image.png

大家好,我是小虚竹。之前有粉丝私聊我,问能不能把JAVA8 新的日期时间API(JSR-310)知识点梳理出来。答案是肯定的,谁让我宠粉呢。由于内容偏多(超十万字了),会拆成多篇来写。


闲话就聊到这,请看下面的正文。


文章目录

常用的日期时间API简介

Clock

Clock类说明

FixedClock

Clock.fixed

Clock.fixed 跟 Offset 方法更配

OffsetClock

SystemClock

Clock.systemDefaultZone()

Clock.systemUTC()

结论

TickClock

Instant

Instant类说明

Instant常用的用法

Instant是没有时区的,但是Instant加上时区后,可以转化为ZonedDateTime

long型时间戳转Instant

Instant的坑

LocalDate

LocalDate类说明

LocalDate常用的用法

获取当前日期

获取localDate对象

获取指定日期的年月日

修改年月日

比较日期

LocalDate 和String相互转化、Date和LocalDate相互转化

LocalDate 和String相互转化

Date和LocalDate相互转化

LocalDateTime

LocalDateTime类说明

LocalDateTime常用的用法

获取当前日期和时间

获取指定日期和时间

日期时间的加减法及修改

LocalDateTime和Date相互转化

Date转LocalDateTime

LocalDateTime转Date

LocalTime

LocalTime类说明

LocalTime常用的用法

获取当前时间

获取LocalTime对象

获取指定日期的时分秒

修改时分秒

比较时间

OffsetDateTime

OffsetDateTime类说明

OffsetDateTime常用的用法

获取当前日期时间

获取OffsetDateTime对象

获取指定日期的年月日时分秒

修改年月日时分秒

比较日期时间

字符串转化为OffsetDateTime对象

OffsetTime

OffsetTime类说明

OffsetTime常用的用法

获取当前时间

获取OffsetTime对象

获取指定时间的时分秒

修改时分秒

比较时间

ZonedDateTime

ZonedDateTime类说明

ZonedDateTime常用的用法

获取当前日期时间

获取ZonedDateTime对象

获取指定日期的年月日时分秒

修改年月日时分秒

比较日期时间

LocalDateTime+ZoneId变ZonedDateTime

推荐相关文章

hutool日期时间系列文章

其他

常用的日期时间API简介

介绍下java8API比较常用的日期时间API,按java.time 包的类顺序:


Clock:时钟

Instant:瞬间时间。

LocalDate:本地日期。只有表示年月日

LocalDateTime:本地日期时间,LocalDate+LocalTime

LocalTime:本地时间,只有表示时分秒

OffsetDateTime:有时间偏移量的日期时间(不包含基于ZoneRegion的时间偏移量)

OffsetTime:有时间偏移量的时间

ZonedDateTime:有时间偏移量的日期时间(包含基于ZoneRegion的时间偏移量)

博主把这些类都点开看了,都是属于不可变类。而且官方也说了,java.time包 下的类都是线程安全的。


Clock

Clock类说明

image.pngimage.pngimage.pngimage.pngimage.pngimage.pngimage.pngimage.png

    Clock tickClock = Clock.tick(Clock.systemDefaultZone(),Duration.ofHours(1L));   
    Clock tickMinutes = Clock.tickMinutes(ZoneId.of("Asia/Shanghai"));    
    Clock tickSeconds = Clock.tickSeconds(ZoneId.of("Asia/Shanghai"));    
    LocalDateTime tickClockLocalDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(tickClock.millis()),ZoneId.of("Asia/Shanghai"));    
    LocalDateTime tickMinutesLocalDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(tickMinutes.millis()),ZoneId.of("Asia/Shanghai"));    
    LocalDateTime tickSecondsLocalDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(tickSeconds.millis()),ZoneId.of("Asia/Shanghai"));    
    System.out.println("tickClock  :"+tickClock.millis() +" 转为date时间:"+tickClockLocalDateTime); 
    System.out.println("tickMinutes:"+tickMinutes.millis() +" 转为date时间:"+tickMinutesLocalDateTime); 
    System.out.println("tickSeconds:"+tickSeconds.millis() +" 转为date时间:"+tickSecondsLocalDateTime);

image.pngimage.pngimage.pngimage.pngimage.pngimage.pngimage.png

    LocalDateTime currentTime = LocalDateTime.now(); // 当前日期和时间
    System.out.println("------------------时间的加减法及修改-----------------------");
    //3.LocalDateTime的加减法包含了LocalDate和LocalTime的所有加减,上面说过,这里就只做简单介绍
    System.out.println("3.当前时间:" + currentTime);
    System.out.println("3.当前时间加5年:" + currentTime.plusYears(5));
    System.out.println("3.当前时间加2个月:" + currentTime.plusMonths(2));
    System.out.println("3.当前时间减2天:" + currentTime.minusDays(2));
    System.out.println("3.当前时间减5个小时:" + currentTime.minusHours(5));
    System.out.println("3.当前时间加5分钟:" + currentTime.plusMinutes(5));
    System.out.println("3.当前时间加20秒:" + currentTime.plusSeconds(20));
    //还可以灵活运用比如:向后加一年,向前减一天,向后加2个小时,向前减5分钟,可以进行连写
    System.out.println("3.同时修改(向后加一年,向前减一天,向后加2个小时,向前减5分钟):" + currentTime.plusYears(1).minusDays(1).plusHours(2).minusMinutes(5));
    System.out.println("3.修改年为2025年:" + currentTime.withYear(2025));
    System.out.println("3.修改月为12月:" + currentTime.withMonth(12));
    System.out.println("3.修改日为27日:" + currentTime.withDayOfMonth(27));
    System.out.println("3.修改小时为12:" + currentTime.withHour(12));
    System.out.println("3.修改分钟为12:" + currentTime.withMinute(12));
    System.out.println("3.修改秒为12:" + currentTime.withSecond(12));

image.png

    System.out.println("------------------方法一:分步写-----------------------");
    //实例化一个时间对象
    Date date = new Date();
    //返回表示时间轴上同一点的瞬间作为日期对象
    Instant instant = date.toInstant();
    //获取系统默认时区
    ZoneId zoneId = ZoneId.systemDefault();
    //根据时区获取带时区的日期和时间
    ZonedDateTime zonedDateTime = instant.atZone(zoneId);
    //转化为LocalDateTime
    LocalDateTime localDateTime = zonedDateTime.toLocalDateTime();
    System.out.println("方法一:原Date = " + date);
    System.out.println("方法一:转化后的LocalDateTime = " + localDateTime);
    System.out.println("------------------方法二:一步到位(推荐使用)-----------------------");
    //实例化一个时间对象
    Date todayDate = new Date();
    //Instant.ofEpochMilli(long l)使用1970-01-01T00:00:00Z的纪元中的毫秒来获取Instant的实例
    LocalDateTime ldt = Instant.ofEpochMilli(todayDate.getTime()).atZone(ZoneId.systemDefault()).toLocalDateTime();
    System.out.println("方法二:原Date = " + todayDate);
    System.out.println("方法二:转化后的LocalDateTime = " + ldt);

image.pngimage.pngimage.pngimage.pngimage.pngimage.pngimage.pngimage.pngimage.pngimage.pngimage.pngimage.pngimage.pngimage.png上面的例子说明了,LocalDateTime是可以转成ZonedDateTime的。


推荐相关文章

hutool日期时间系列文章

1DateUtil(时间工具类)-当前时间和当前时间戳


2DateUtil(时间工具类)-常用的时间类型Date,DateTime,Calendar和TemporalAccessor(LocalDateTime)转换


3DateUtil(时间工具类)-获取日期的各种内容


4DateUtil(时间工具类)-格式化时间


5DateUtil(时间工具类)-解析被格式化的时间


6DateUtil(时间工具类)-时间偏移量获取


7DateUtil(时间工具类)-日期计算


8ChineseDate(农历日期工具类)


9LocalDateTimeUtil(JDK8+中的{@link LocalDateTime} 工具类封装)


10TemporalAccessorUtil{@link TemporalAccessor} 工具类封装


其他

要探索JDK的核心底层源码,那必须掌握native用法


万字博文教你搞懂java源码的日期和时间相关用法


java的SimpleDateFormat线程不安全出问题了,虚竹教你多种解决方案


源码分析:JDK获取默认时区的风险和最佳实践


目录
相关文章
|
5天前
|
自然语言处理 搜索推荐 数据挖掘
淘宝商品描述 API 接口的开发、应用与收益
淘宝商品描述API接口的开发与应用涵盖注册成为开发者、了解API规范、选择开发工具及语言(如Python)和实现代码调用。该接口可用于优化电商平台商品展示、同步数据、竞品分析、智能客服及个性化推荐,从而提高销售转化率、降低运营成本并拓展业务机会。通过自动化处理和数据分析,企业能更精准地满足消费者需求,提升竞争力。
40 9
|
11天前
|
安全 搜索推荐 数据挖掘
虾皮店铺商品API接口的开发、运用与收益
虾皮(Shopee)作为东南亚领先的电商平台,通过开放API接口为商家和开发者提供了全面的数据支持。本文详细介绍虾皮店铺商品API的开发与运用,涵盖注册认证、API文档解读、请求参数设置、签名生成、HTTP请求发送及响应解析等步骤,并提供Python代码示例。API接口广泛应用于电商导购、价格比较、商品推荐、数据分析等场景,带来提升用户体验、增加流量、提高运营效率等收益。开发者需注意API密钥安全、请求频率控制及遵守使用规则,确保接口稳定可靠。虾皮API推动了电商行业的创新与发展。
80 31
|
9天前
|
监控 搜索推荐 API
京东JD商品详情原数据API接口的开发、运用与收益
京东商品详情API接口是京东开放平台的重要组成部分,通过程序化方式向第三方提供商品详细信息,涵盖名称、价格、库存等。它促进了京东生态系统的建设,提升了数据利用效率,并推动了企业和商家的数字化转型。开发者可通过注册账号、获取密钥、调用接口并解析返回结果来使用该API。应用场景包括电商平台的价格监控、竞品分析、个性化推荐系统开发、移动应用开发及数据整合与共享等。该接口不仅为企业和开发者带来商业价值提升、用户体验优化,还助力数据资产积累,未来应用前景广阔。
47 9
|
6天前
|
JSON Java 数据挖掘
利用 Java 代码获取淘宝关键字 API 接口
在数字化商业时代,精准把握市场动态与消费者需求是企业成功的关键。淘宝作为中国最大的电商平台之一,其海量数据中蕴含丰富的商业洞察。本文介绍如何通过Java代码高效、合规地获取淘宝关键字API接口数据,帮助商家优化产品布局、制定营销策略。主要内容包括: 1. **淘宝关键字API的价值**:洞察用户需求、优化产品标题与详情、制定营销策略。 2. **获取API接口的步骤**:注册账号、申请权限、搭建Java开发环境、编写调用代码、解析响应数据。 3. **注意事项**:遵守法律法规与平台规则,处理API调用限制。 通过这些步骤,商家可以在激烈的市场竞争中脱颖而出。
|
14天前
|
存储 搜索推荐 API
拼多多根据ID取商品详情原数据API接口的开发、运用与收益
拼多多作为中国电商市场的重要参与者,通过开放平台提供了丰富的API接口,其中根据ID取商品详情原数据的API接口尤为重要。该接口允许开发者通过编程方式获取商品的详细信息,为电商数据分析、竞品分析、价格监测、商品推荐等多个领域带来了丰富的应用场景和显著的收益。
43 10
|
6天前
|
存储 JSON API
小红书获取笔记详情API接口的开发、应用与收益。
小红书笔记详情API采用Python与Django框架开发,使用MySQL数据库存储数据。接口通过HTTP GET请求获取笔记详情,返回JSON格式数据,包含笔记内容、作者信息、图片链接等。该API应用于小红书APP内笔记展示和互动功能,并支持第三方平台的内容整合与数据分析,提升用户体验与活跃度,促进品牌合作推广,优化平台运营效率,为平台带来显著收益。
48 1
|
12天前
|
JSON 供应链 搜索推荐
淘宝APP分类API接口:开发、运用与收益全解析
淘宝APP作为国内领先的购物平台,拥有丰富的商品资源和庞大的用户群体。分类API接口是实现商品分类管理、查询及个性化推荐的关键工具。通过开发和使用该接口,商家可以构建分类树、进行商品查询与搜索、提供个性化推荐,从而提高销售额、增加商品曝光、提升用户体验并降低运营成本。此外,它还能帮助拓展业务范围,满足用户的多样化需求,推动电商业务的发展和创新。
35 5
|
19天前
|
存储 API 计算机视觉
自学记录HarmonyOS Next Image API 13:图像处理与传输的开发实践
在完成数字版权管理(DRM)项目后,我决定挑战HarmonyOS Next的图像处理功能,学习Image API和SendableImage API。这两个API支持图像加载、编辑、存储及跨设备发送共享。我计划开发一个简单的图像编辑与发送工具,实现图像裁剪、缩放及跨设备共享功能。通过研究,我深刻体会到HarmonyOS的强大设计,未来这些功能可应用于照片编辑、媒体共享等场景。如果你对图像处理感兴趣,不妨一起探索更多高级特性,共同进步。
72 11
|
16天前
|
JSON API 开发者
Lazada 商品评论列表 API 接口:开发、应用与收益
Lazada作为东南亚领先的电商平台,其商品评论数据蕴含丰富信息。通过开发和利用Lazada商品评论列表API接口,企业可深入挖掘这些数据,优化产品、营销和服务,提升客户体验和市场竞争力。该API基于HTTP协议,支持GET、POST等方法,开发者需注册获取API密钥,并选择合适的编程语言(如Python)进行开发。应用场景包括竞品分析、客户反馈处理及精准营销,帮助企业提升销售业绩、降低运营成本并增强品牌声誉。
33 2
|
19天前
|
监控 搜索推荐 API
京东按图搜索京东商品(拍立淘)API接口的开发、应用与收益
京东通过开放商品详情API接口,尤其是按图搜索(拍立淘)API,为开发者、企业和商家提供了创新空间和数据支持。该API基于图像识别技术,允许用户上传图片搜索相似商品,提升购物体验和平台竞争力。开发流程包括注册账号、获取密钥、准备图片、调用API并解析结果。应用场景涵盖电商平台优化、竞品分析、个性化推荐等,为企业带来显著收益,如增加销售额、提高利润空间和优化用户体验。未来,随着数字化转型的深入,该API的应用前景将更加广阔。
70 1