Java JDK8新日期API

一、   JDK8 中增加了一套全新的日期时间 API,这套 API 设计合理,是线程安全的。

  1. java.time – 包含值对象的基础包
  2. java.time.chrono – 提供对不同的日历系统的访问
  3. java.time.format – 格式化和解析时间和日期
  4. java.time.temporal – 包括底层框架和扩展特性
  5. java.time.zone – 包含时区支持的类

     说明:大多数开发者只会用到基础包和format包,也可能会用到temporal包。因此,尽管有68个新的公开类型,大多数开发者,大概将只会用到其中的三分之一 。

新的日期及时间 API 位于 java.time 包下,如下是一些该包下的关键类:

LocalDate:表示日期,包含:年月日。格式为:2020-01-13
LocalTime:表示时间,包含:时分秒。格式为:16:39:09.307
LocalDateTime:表示日期时间,包含:年月日 时分秒。格式为:2020-01-13T16:40:59.138
DateTimeFormatter:日期时间格式化类
Instant:时间戳类
Duration:用于计算 2 个时间(LocalTime,时分秒)之间的差距
Period:用于计算 2 个日期(LocalDate,年月日)之间的差距
ZonedDateTime:包含时区的时间

 提供这些方法:

二、使用JDK8中的日期时间

 (1)获取当前日期

     //当前日期LocalDate ld=LocalDate.now();System.out.println(ld);//当前时间LocalTime  time=LocalTime.now();System.out.println(time);//日期和时间LocalDateTime tt=LocalDateTime.now();System.out.println(tt);

(2) 设置指定的时间

    //设置指定的年、月、日、时、分、秒。没有偏移量LocalDateTime ldt = LocalDateTime.of(2024, 3, 20, 14, 10, 48);System.out.println(ldt);

(3)获取年月日时分秒

        System.out.println("年:"+ldt.getYear());System.out.println("本月第几天:"+ldt.getDayOfMonth());System.out.println("日期周几:"+ldt.getDayOfWeek());    //枚举System.out.println("本月英文:"+ldt.getMonth());        //枚举System.out.println("本月数字:"+ldt.getMonthValue());System.out.println("一年中第几天:"+ldt.getDayOfYear());System.out.println("时:"+ldt.getHour());System.out.println("分:"+ldt.getMinute());System.out.println("秒:"+ldt.getSecond());

 

(4)设置偏移量 :plusXXX,minusXXX

       // 获取当前日期LocalDateTime date = LocalDateTime.now();// 创建一个日期格式化器DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");// 使用格式化器格式化日期String str = date.format(formatter);System.out.println("系统当前日期:"+str);//下个月的今天LocalDateTime next=date.plusMonths(1);String str2 = next.format(formatter);System.out.println("下个月的今天: "+str2);//去年的今天LocalDateTime last=date.minusYears(1);String str3 = last.format(formatter);System.out.println("去年的今天:   "+str3);

(5)设置时间/日期:withDayOfMonth()/withDayOfYear()/withMonth()/withYear()

// 获取当前日期LocalDateTime date = LocalDateTime.now();// 创建一个日期格式化器DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");// 使用格式化器格式化日期String str = date.format(formatter);System.out.println("系统当前日期:"+str);//上个月的第三天LocalDateTime third=date.minusMonths(1).withDayOfMonth(3);String str4 = third.format(formatter);System.out.println("上个月的第3天:"+str4);

(6)计算日期相对间隔(计算年龄)

        //现在日期LocalDate now=LocalDate.now();//出生日期LocalDate bir=LocalDate.of(2001,3,1);//age=现在日期-出生日期Period period= Period.between(bir,now);//获取年龄int age=period.getYears();System.out.println("从"+bir+"出生到现在"+now+"的年龄是:"+age);

 

 // 创建 LocalDate 对象LocalDate date = LocalDate.now();System.out.println(date);// 计算两个日期之间相差的时间LocalDate date2 = LocalDate.of(2023, 2, 10);System.out.println(date2);Period period = Period.between(date2, date);System.out.println(period.getYears() + "年" + period.getMonths() + "月" + period.getDays() + "天"); // 输出:0年11月11天// 创建 LocalTime 对象LocalTime time = LocalTime.now();System.out.println(time);// 计算两个时间点之间相差的时间LocalTime time2 = LocalTime.of(10, 30);System.out.println(time2);Duration duration = Duration.between(time2, time);System.out.println(duration.toHours() + "小时" + duration.toMinutes() % 60 + "分钟"); // 输出:6小时1分钟

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/761472.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

考研数学老师怎么选❓看这一篇就够了

张宇、汤家凤、武忠祥、李永乐、杨超、王式安、方浩这些老师都有自己擅长的细分 比如张宇老师,杨超,汤家凤,武忠祥老师的高数讲的很好,李永乐老师是线代的神,王式安、方浩概率论讲的很好,所以对于不同的学…

【文末附gpt升级4.0方案】FastGPT详解

FastGPT知识库结构讲解 FastGPT是一个基于GPT模型的知识库,它的结构可以分为以下几个部分: 1. 数据收集:FastGPT的知识库是通过从互联网上收集大量的文本数据来构建的。这些数据可以包括维基百科、新闻文章、论坛帖子等各种类型的文本。 2…

【openCV】手写算式识别

OpenCV 机器学习库提供了一系列 SVM 函数和类来实现 SVM 模型的训练和预测,方便用户实现自己的 SVM 模型,并应用于分类问题。本文主要介绍使用 openCV 实现手写算式识别的工作原理与实现过程。 目录 1 SVM 模型 1.1 SVM 模型介绍 1.2 SVM 模型原理 2…

在DelayMS加入bsp_Idle,把单片机延时空闲利用起来

在单片机应用中,使用延时函数 DelayMS() 会导致程序在延时期间无法执行其他任务, 这可能影响系统对一些响应时间要求较高的任务的处理。 为了提高系统的响应速度和利用单片机的空闲时间,可以在延时函数中加入 bsp_Idle() 函数, 以…

3.21系统栈、数据结构栈、栈的基本操作、队列、队列的基本操作------------》

栈 先进后出、后进先出 一、系统栈 大小:8MB 1、局部变量 2、未经初始化为随机值 3、代码执行到变量定义时为变量开辟空间 4、当变量的作用域结束时回收空间 5、函数的形参和返回值 6、函数的调用关系、保护现场和恢复现场 7、栈的增长方向,自高…

5.1.5、【AI技术新纪元:Spring AI解码】HuggingFace Chat

HuggingFace 推理端点允许您在云中部署和提供机器学习模型,使其可以通过 API 访问。 入门 关于 HuggingFace 推理端点的更多详细信息可以在此处找到。 先决条件 添加 spring-ai-huggingface 依赖项: <dependency><groupId>org.springframework.ai</groupId…

【Linux进程的状态】

目录 看Linux源码中的说法 如何查看进程状态&#xff1f; 各个状态的关系 僵尸进程 举个栗子 现象 僵尸进程的危害 孤儿进程 举个栗子 现象 进程的优先级 基本概念 为什么要有进程优先级&#xff1f; 查看系统进程 进程的大致属性 进程优先级vs进程的权限 Linu…

[Semi-笔记] 2023_TIP

目录 概要一&#xff1a;Conservative-Progressive Collaborative Learning&#xff08;保守渐进式协作学习&#xff09;挑战&#xff1a;解决&#xff1a; 二&#xff1a;Pseudo Label Determination for Disagreement&#xff08;伪标签分歧判定&#xff09;挑战&#xff1a;…

利用python进行接口测试及类型介绍

前言 其实我觉得接口测试很简单&#xff0c;比一般的功能测试还简单&#xff08;这话我先这样说&#xff0c;以后可能会删O(∩_∩)O哈&#xff01;&#xff09;&#xff0c;现在找工作好多公司都要求有接口测试经验&#xff0c;也有好多人问我&#xff08;也就两三个人&#x…

python离线安装依赖库 依赖库版本

问题&#xff1a;python开发过程中&#xff0c;下载安装某一功能模块&#xff0c;常常需要各种依赖库支持。如果在线安装&#xff0c;则非常方便简单&#xff0c;但往往需要离线下载所需的依赖库。但各种依赖库存在许多版本&#xff0c;如何准确快速知道我们所需要的依赖库呢&a…

解决微信小程序代码包大小限制方法

1 为什么微信小程序单个包的大小限制为 2MB 微信小程序单个包的大小限制为 2MB 是出于以下几个考虑&#xff1a; 保证小程序的启动速度&#xff1a;小程序的启动速度是影响用户体验的关键因素之一。如果包太大&#xff0c;会导致小程序启动时间过长&#xff0c;从而影响用户体…

node安装

这里写目录标题 https://nodejs.cn/ https://registry.npmmirror.com/binary.html?pathnode/ https://registry.npmmirror.com/binary.html?pathnode/v11.0.0/

初识CSS样式 与 文本背景样式

目录 前言: 1.什么是CSS: 2.关于css的主要特性: 2.1层叠性&#xff1a; 2.2继承性&#xff1a; 2.3优先级&#xff1a; 2.4.CSS的组成结构: 3.css样式的三种写法: 3.1内联样式&#xff1a; 3.1.2存在的优点和缺点: 3.2内部样式表&#xff1a; 3.2.2存在的优点和缺点:…

JAVA 100道题(11)

11.使用ArrayList存储一组整数&#xff0c;并编写一个方法打印所有偶数。 它使用ArrayList来存储一组整数&#xff0c;并编写一个方法来打印所有的偶数。 java复制代码 import java.util.ArrayList; public class Main { public static void main(String[] args) { // 创建一个…

[蓝桥杯 2019 省 A] 修改数组

题目链接 [蓝桥杯 2019 省 A] 修改数组 题目描述 给定一个长度为 N N N 的数组 A [ A 1 , A 2 , A 3 , . . . , A N ] A [A_1, A_2, A_3, ...,A_N] A[A1​,A2​,A3​,...,AN​]&#xff0c;数组中有可能有重复出现的整数。 现在小明要按以下方法将其修改为没有重复整数的…

Java实现Cache Aside Pattern 例子

简单的Java实现Cache Aside pattern &#xff1a; import java.util.HashMap; import java.util.Map;public class CacheAsidePattern {// 模拟数据库或其他数据源static class Database {private static Map<String, String> data new HashMap<>();static {data…

CAN总线Stuff Error

CAN总线Stuff Error&#xff0c;即填充错误&#xff0c;指的是在使用位填充编码的位流中&#xff0c;出现了第六个连续相同的位电平。这种错误通常发生在位填充机制被用于CAN总线通信中&#xff0c;以确保数据传输的正确性和稳定性。以下是一些可能导致Stuff Error的原因&#…

每日三个JAVA经典面试题(十九)

1.Java Concurrency API 中的 Lock 接口(Lock interface)是什么&#xff1f;对比同步它有什么优势&#xff1f;Java并发API中的Lock接口提供了一种比传统synchronized块或方法更灵活、更强大的线程同步机制。Lock接口允许更细粒度的锁控制&#xff0c;通过它可以实现更复杂的线…

一、rv1126开发之视频输入和视频编码

RV1126 H264/HEVC编码流程 一、RV1126编码的流程图&#xff1a; 二、每个代码模块详细讲解 2.1. VI模块的创建 VI模块的初始化&#xff1a;关键在于VI_CHN_ATTR_S结构体&#xff0c;这个结构体是VI设置的结构体。这个结构体的成员变量包括&#xff1a;pcVideoNode&#xff0…

php实现二进制权限控制示例,二进制权限控制实现思路,二进制权限控制逻辑,二进制权限控制好处,二进制权限控制弊端,二进制权限控制存权限查权限

背景:在群里看到大佬们分享这个知识点自己实操了一下做了个总结 1.二进制权限控制实现原理思路及逻辑 对于二进制权限控制,一个常见的做法是将权限用一个整数表示,然后将这个整数转换为二进制进行存储和查找。以下是一种简单的实现思路: 存储权限信息: 将权限信息转换为…