日期类(java)
文章目录
- 第一代日期类 Date
- 常用构造方法
- SimpleDateFormat 日期格式化类
- 日期转字符串(String -> Date)
- 字符串转日期 (String->Date)
- 第二代日期类 Calendar
- 常用字段与如何得到实例对象
- 相关 API
- 第三代日期类(LocalDate\TIme)
- 日期,时间,日期时间
- 日期时间格式化(DateTimeFormatter)
- 时间戳
- 计算时间(Time)对象间隔(Duration)
- 计算日期(Date)对象间隔 (Period)
- 日期(Date)矫正器(TemporalAdjusters)
第一代日期类 Date
常用构造方法
第一种:Date()
第二种:Date(long 毫秒)
public class Main {public static void main(String[] args) throws ParseException {//默认国外形式Date date = new Date();System.out.println(date);//创建了一个代表从1970年1月1日00:00:00 GMT开始后的1000毫秒的日期和时间。//但是输出 toString 的时候它会显示当前系统所在时区的时间。//因此,如果你的系统位于东八区(例如中国标准时间),那么输出将会是 "08:00:00"Date date1 = new Date(1000);System.out.println(date1);}
}
1000 是 一秒,1000 * 60 就是 60秒,1000 * 60 * 10 就是 10分钟
SimpleDateFormat 日期格式化类


日期转字符串(String -> Date)
用 String format(Date date) 方法转成字符串
public class Main {public static void main(String[] args) throws ParseException {Date date = new Date();//y:年份,M:年中月份,d:月中日期,F:星期, H:一天中的小时,m:小时中的分钟SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd 星期F HH:mm");//转成字符串String date1 = sdf.format(date);//输出2024-06-28 星期 4 22:42System.out.println(date1);}
}
字符串转日期 (String->Date)
用 Date parse(String source) 转成 Date
public class Main {public static void main(String[] args) throws ParseException {String data = "2024-6-28 星期5 22:49";//格式和上面对不上会报 parseException 异常 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd 星期F HH:mm");Date date = sdf.parse(data);System.out.println(data);}
}
格式和上面对不上会报 parseException 异常
第二代日期类 Calendar
Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR, MONTH, DAY_OF_MONTH, HOUR 等 日期字段 之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法
常用字段与如何得到实例对象

Calender 没有专门的格式化方法,需要程序员自己组合
public class Main {public static void main(String[] args) throws ParseException {Calendar calendar = Calendar.getInstance();System.out.println(calendar);//底层是这样的:public static final int YEAR = 1;int year = calendar.get(1);int year2 = calendar.get(Calendar.YEAR);System.out.println(year);System.out.println(year2);}
}
相关 API

public class Main {public static void main(String[] args) throws ParseException {Calendar calendar = Calendar.getInstance();//把年设置成 2004calendar.set(Calendar.YEAR, 2004);System.out.println(calendar.get(Calendar.YEAR));//加一年calendar.add(Calendar.YEAR, -1);System.out.println(calendar.get(Calendar.YEAR));//关联日期String strDate = "2008-05-20 15:30:30";SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date date = sdf.parse(strDate);calendar.setTime(date);System.out.println(calendar.get(Calendar.YEAR));}
}
第三代日期类(LocalDate\TIme)
JDK 8 加入的
LocalDate (日期/年月日),LocalTime (时间/时分秒),LocalDateTime (日期时间)
老日期类,线程不安全, 新的支持线程安全,建议直接用这个就行
日期,时间,日期时间

public class Main {public static void main(String[] args) throws ParseException {//获取当前日期LocalDateTime ldt = LocalDateTime.now();System.out.println(ldt);//获取指定日期时间LocalDateTime ldt2 = LocalDateTime.of(2024,6,29,10,10);System.out.println(ldt);//加减日期ldt2 = ldt2.plusYears(2).plusYears(-1);System.out.println(ldt2);//获取年int year = ldt2.getYear();System.out.println(year);}
}
日期时间格式化(DateTimeFormatter)


public class Main {public static void main(String[] args) throws ParseException {//LocalDateTime -> StringLocalDateTime localDateTime = LocalDateTime.now();DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");String s = dtf.format(localDateTime);System.out.println(s);//String -> LocalDateTimeString date = "2024-06-29";DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern("yyyy-MM-dd");//格式不对会抛 parse 异常LocalDate localDate = LocalDate.parse(date, dtf2);System.out.println(localDate);}
}
如果是 LocalDateTime 必须要包含时间和日期
时间戳
时间戳:1970年1月1日零时零分零秒,到系统当前时间的总毫秒数
public class Main {public static void main(String[] args) throws ParseException {//获取系统当前时间(UTC:全球标准时间)Instant instant = Instant.now();//获取时间戳long cuo = instant.toEpochMilli();System.out.println(cuo);}
}
计算时间(Time)对象间隔(Duration)

public class Main {public static void main(String[] args) throws ParseException {LocalDateTime time1 = LocalDateTime.of(2024, 6,29,8,8);LocalDateTime time2 = LocalDateTime.of(2023, 5,27,8,8);//两时间对象相差对少天//后面 - 前面Duration duration = Duration.between( time2,time1);System.out.println(duration.toDays());//两时间相差多少天System.out.println(duration.toHours());}
}
计算日期(Date)对象间隔 (Period)

public class Main {public static void main(String[] args) throws ParseException {LocalDate localDate1= LocalDate.of(2007, 7,7);LocalDate localDate2 = LocalDate.of(2008, 7,7);Period between = Period.between(localDate1, localDate2);//相差年数System.out.println(between.getYears());}
}
日期(Date)矫正器(TemporalAdjusters)
public class Main {public static void main(String[] args) throws ParseException {//获取系统当前时间LocalDateTime now = LocalDateTime.now();//矫正时间LocalDateTime localDateTime = now.with(TemporalAdjusters.lastDayOfMonth());System.out.println(localDateTime);}
}
相关文章:
日期类(java)
文章目录 第一代日期类 Date常用构造方法SimpleDateFormat 日期格式化类日期转字符串(String -> Date)字符串转日期 (String->Date) 第二代日期类 Calendar常用字段与如何得到实例对象相关 API 第三代日期类(LocalDate\TIme)日期,时间&…...
【深度学习】C++ Tensorrt Yolov8 目标检测推理
C Tensorrt Yolov8 目标检测推理 模型导出代码yolov8.hyolov8.cppcommon.hppCMakeListmain.cpp C tensorrt对yolov8目标检测模型进行推理。 Windows版本下只需要修改common.hpp对文件的判断S_ISREG 和对文件夹的判断S_ISDIR即可,非核心代码,不调用删掉都…...
【项目日记(二)】搜索引擎-索引制作
❣博主主页: 33的博客❣ ▶️文章专栏分类:项目日记◀️ 🚚我的代码仓库: 33的代码仓库🚚 🫵🫵🫵关注我带你了解更多项目内容 目录 1.前言2.索引结构2.1创捷索引2.2根据索引查询2.3新增文档2.4内存索引保存到磁盘2.5把…...
K 近邻、K-NN 算法图文详解
1. 为什么学习KNN算法 KNN是监督学习分类算法,主要解决现实生活中分类问题。根据目标的不同将监督学习任务分为了分类学习及回归预测问题。 KNN(K-Nearest Neihbor,KNN)K近邻是机器学习算法中理论最简单,最好理解的算法…...
Eclipse + GDB + J-Link 的单片机程序调试实践
Eclipse GDB J-Link 的调试实践 本文介绍如何创建Eclipse的调试配置,如何控制调试过程,如何查看修改各种变量。 对 Eclipse 的要求 所用 Eclipse 应当安装了 Eclipse Embedded CDT 插件。从 https://www.eclipse.org/downloads/packages/ 下载 Ecli…...
前端代码生成辅助工具
1,Axure Axure设计的界面如何生成HTML文件 https://blog.csdn.net/qq_43279782/article/details/112387511 Axure 生成HTML 文件,并用Chrome打开 https://blog.csdn.net/qq_30718137/article/details/80621025 2,OpenUI [开源] OpenUI …...
静态库与动态库总结
一、库文件和头文件 所谓库文件,可以将其理解为压缩包文件,该文件内部通常包含不止一个目标文件(也就是二进制文件)。 值得一提的是,库文件中每个目标文件存储的代码,并非完整的程序,而是一个…...
深入解析tcpdump:网络数据包捕获与分析的利器
引言 在网络技术日新月异的今天,网络数据包的捕获与分析成为了网络管理员、安全专家以及开发人员不可或缺的技能。其中,tcpdump作为一款强大的网络数据包捕获分析工具,广泛应用于Linux系统中。本文将从技术人的角度,详细分析tcpdu…...
【漏洞复现】科立讯通信有限公司指挥调度管理平台uploadgps.php存在SQL注入
0x01 产品简介 科立讯通信指挥调度管理平台是一个专门针对通信行业的管理平台。该产品旨在提供高效的指挥调度和管理解决方案,以帮助通信运营商或相关机构实现更好的运营效率和服务质量。该平台提供强大的指挥调度功能,可以实时监控和管理通信网络设备、…...
什么是自然语言处理(NLP)?详细解读文本分类、情感分析和机器翻译的核心技术
什么是自然语言处理? 自然语言处理(Natural Language Processing,简称NLP)是人工智能的一个重要分支,旨在让计算机理解、解释和生成人类的自然语言。打个比方,你和Siri对话,或使用谷歌翻译翻译一…...
【linux】gcc快速入门教程
目录 一.gcc简介 二.gcc常用命令 一.gcc简介 gcc 是GNU Compiler Collection(GNU编译器套件)。就是一个编译器。编译一个源文件的时候可以直接使用,但是源文件数量太多时,就很不方便,于是就出现了make 工具 二.gcc…...
【多维动态规划】Leetcode 97. 交错字符串【中等】
交错字符串 给定三个字符串 s1、s2、s3,请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。 两个字符串 s 和 t 交错 的定义与过程如下,其中每个字符串都会被分割成若干 非空 子字符串 子字符串 是字符串中连续的 非空 字符序列。 s s1 s2 … snt…...
【JavaScript脚本宇宙】精通前端开发:六大热门CSS框架详解
前端开发的利器:深入了解六大CSS框架 前言 在现代Web开发中,选择适合的前端框架和工具包是构建高效、响应式和美观的网站或应用程序的关键。本文将详细介绍六个广受欢迎的CSS框架:Bootstrap、Bulma、Tailwind CSS、Foundation、Materialize…...
开发技术-Java集合(List)删除元素的几种方式
文章目录 1. 错误的删除2. 正确的方法2.1 倒叙删除2.2 迭代器删除2.3 removeAll() 删除2.4 removeIf() 最简单的删除 3. 总结 1. 错误的删除 在写代码时,想将其中的一个元素删除,就遍历了 list ,使用了 remove(),发现效果并不是想…...
c++ 递归
递归函数是指在函数定义中调用自身的函数。C语言也支持递归函数。 下面是一个使用递归函数计算阶乘的例子: #include <iostream> using namespace std;int factorial(int n) {// 基本情况,当 n 等于 0 或 1 时,阶乘为 1if (n 0 || n…...
RedHat9 | podman容器
1、容器技术介绍 传统问题 应用程序和依赖需要一起安装在物理主机或虚拟机上的操作系统应用程序版本比当前操作系统安装的版本更低或更新两个应用程序可能需要某一软件的不同版本,彼此版本之间不兼容 解决方式 将应用程序打包并部署为容器容器是与系统的其他部分…...
边缘计算项目有哪些
边缘计算项目在多个领域得到了广泛的应用,以下是一些典型的边缘计算项目案例: 1. **智能交通系统**:通过在交通信号灯、监控摄像头等设备上部署边缘计算,可以实时分析交通流量,优化交通信号控制,减少拥堵&…...
计算fibonacci数列每一项时所需的递归调用次数
斐波那契数列是一个经典的数列,其中每一项是前两项的和,定义为: [ F(n) F(n-1) F(n-2) ] 其中,( F(0) 0 ) 和 ( F(1) 1 )。 对于计算斐波那契数列的第 ( n ) 项,如果使用简单的递归方法,其时间复杂度是…...
【教学类65-05】20240627秘密花园涂色书(中四班练习)
【教学类65-03】20240622秘密花园涂色书03(通义万相)(A4横版1张,一大 68张纸136份)-CSDN博客 背景需求: 打印以下几款秘密花园样式(每款10份)给中四班孩子玩一下,看看效果 【教学类…...
Python 学习之基础语法(一)
Python的语法基础主要包括以下几个方面,下面将逐一进行分点表示和归纳: 一、基本语法 1. 注释 a. 单行注释:使用#开头,例如# 这是一个单行注释。 b. 多行注释:使用三引号(可以是三个单引号或三个双引号&…...
第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...
基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...
蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...
Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...
比较数据迁移后MySQL数据库和OceanBase数据仓库中的表
设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...
