详细分析Java中的Date类以及格式转换
目录
- 前言
- 1. 基本知识
- 2. 格式化输出
- 3. 格式转换
前言
记录这篇文章的缘由,主要是涉及一个格式转换,对此深挖了这个类
在Java中,Date类是用于表示日期和时间的类。
位于java.util包中,是Java平台中处理日期和时间的基本类之一。然而,需要注意的是,Date类存在一些问题:
其中之一是它不支持国际化,而且在Java 8及以后版本中,推荐使用java.time包中的新日期和时间API(如LocalDate、LocalTime、LocalDateTime等)来替代Date类。
1. 基本知识
一、 以下是Date类的一些基本概念和作用:
-
概念: Date类用于表示一个特定的时间点,精确到毫秒级别。
存储的是从1970年1月1日午夜开始的毫秒数,这被称为“Unix时间”或“Epoch时间”。 -
作用: Date类主要用于获取、表示和操作日期和时间。
用于记录事件发生的时间、计算时间间隔等。
二、常用的Date类API包括:
| 构造方法 | 获取时间 | 设置时间 | 时间比较 | 格式转换 |
|---|---|---|---|---|
Date(): 创建一个表示当前时间的Date对象。Date(long date): 根据指定的毫秒数创建一个Date对象。 | getTime(): 返回从1970年1月1日00:00:00以来的毫秒数。 | setTime(long time): 设置Date对象的时间。 | before(Date when): 判断当前日期是否在指定日期之前。after(Date when): 判断当前日期是否在指定日期之后。equals(Object obj): 判断两个日期是否相等。 | toString(): 将日期对象转换为字符串。toLocaleString(): 将日期对象转换为本地化的字符串。toGMTString(): 将日期对象转换为GMT时间字符串。 |
然而,由于Date类的一些缺陷,建议在新的应用中使用java.time包中的日期和时间API,以便更好地处理日期和时间的操作。
2. 格式化输出
一般Date格式化输出,会配合SimpleDateFormat这个类!
主要的参数如下:
| 字母 | 含义 |
|---|---|
| y | 年 |
| M | 年中的月份 |
| w | 年中的周数 |
| W | 月份中的周数 |
| D | 年中的天数 |
| d | 月份中的天数 |
| F | 月份中的星期 |
| E | 星期中的天数 |
| a | Am/pm 标记 |
| H | 一天中的小时数(0-23) |
| k | 一天中的小时数(1-24) |
| K | am/pm 中的小时数(0-11) |
| h | am/pm 中的小时数(1-12) |
| m | 小时中的分钟数 |
| s | 分钟中的秒数 |
| S | 毫秒数 |
| z | 时区 |
例子如下:
import java.text.SimpleDateFormat;
import java.util.Date;public class datetest {public static void main(String[] args) {Date now = new Date();SimpleDateFormat sd=new SimpleDateFormat("现在时间: "+"yyyy 年 MM 月 dd 日 E HH 点 mm 分 ss 秒");System.out.println(sd.format(now));sd = new SimpleDateFormat("一年中的第 D 天,一个月中的第 F 个星期 ,一年中的第 w 个星期,一个月中的第 W 个星期");System.out.println(sd.format(now));}
}
截图如下:

特别注意到是12小时和24小时的规则不大一样:
import java.text.SimpleDateFormat;
import java.util.Date;public class datetest {public static void main(String[] args) {Date now = new Date();// yyyy-MM-dd hh:mm:ss 12小时SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); //小写是12小时System.out.println(sdf.format(now));// yyy-MM-dd HH:mm:ss 24小时sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//大写是24小时的System.out.println(sdf.format(now));}
}
截图如下:(由于时间点还没过下午,将就下~)

3. 格式转换
常用的转换主要是Date转换为String,或者String转换为时间格式!
一、Date转换为String:
public class datetest {public static void main(String[] args) {Date now = new Date();SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");System.out.println(sd.format(now));// 自定义格式sd = new SimpleDateFormat("M-dd");System.out.println(sd.format(now));}
}
截图如下:

二、String转换为Date:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;public class datetest {public static void main(String[] args) {SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");String now = "2024-01-21";try {// 转换为Date类型Date date = sd.parse(now);System.out.println(date);// 输出long的格式long time = date.getTime();System.out.println(time);// long格式之后转换为String来表示System.out.println(sd.format(time));} catch (ParseException e) {throw new RuntimeException(e);}}
}
截图如下:

相关文章:
详细分析Java中的Date类以及格式转换
目录 前言1. 基本知识2. 格式化输出3. 格式转换 前言 记录这篇文章的缘由,主要是涉及一个格式转换,对此深挖了这个类 在Java中,Date类是用于表示日期和时间的类。 位于java.util包中,是Java平台中处理日期和时间的基本类之一。…...
【计算机网络】应用层——HTTP 协议(一)
个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【网络编程】 本专栏旨在分享学习计算机网络的一点学习心得,欢迎大家在评论区交流讨论💌 目录 一、什么是 HTTP 协…...
线程和进程的区别
Java面试题 线程和进程的区别 进程是操作系统资源分配的基本单位。 线程是处理器任务调度和执行的基本单位 一个进程可以包含多个线程。进程之间的资源是相互独立,而同一进程下的线程之间可以共享进程中的资源。...
proxy 代理的接口报错301问题
项目系统里仅仅这个接口报错,反向代理错误导致。 默认情况下,不接受运行在HTTPS上,且使用了无效证书的后端服务器。如果你想要接受,修改配置:secure: false(简单意思:如果本地没有进行过https相…...
mysql进阶-执行计划
目录 1. 概念 2. 使用 3. 具体相关字段含义 3.1 id 3.2 select_type 3.3 table 3.4 partition 3.5 type 3.6 possible_key 3.7 key 3.8 key_len 3.9 ref 3.10 row 3.11 filtered 3.12 extra 1. 概念 一条语句通过优化器之后,会生成具体的执行计划用…...
【UE5】第一次尝试项目转插件(Plugin)的时候,无法编译
VS显示100条左右的错误,UE热编译也不能通过。原因可能是[名字.Build.cs]文件的错误,缺少一些内容,比如说如果要写UserWidget类,那么就要在 ]名字.Build.cs] 中加入如下内容: public class beibaoxitong : ModuleRules …...
MeterSphere本地化部署实践
项目结构 搭建本地环境 安装JDK11,配置好JDK环境,系统同时支持JDK8和JDK11安装IEAD,配置JDK环境配置maven环境,IDEA配置(解压可以直接使用)无限重置IDEA试用期配置redis环境(解压可以直接使用) 配置kafka环境 安装mysql-5.7环境ÿ…...
巨变!如何理解中国发起的“数据要素X”计划?
作者 张群(赛联区块链教育首席讲师,工信部赛迪特聘资深专家,CSDN认证业界专家,微软认证专家,多家企业区块链产品顾问)关注张群,为您提供一站式区块链技术和方案咨询。 刘烈宏在第25届北大光华新…...
CS8370错误,这是由于使用了C# 7.3中不支持的功能
目录 背景: 第一种方法: 第二种办法: 背景: 在敲代码的时候,程序提示报错消息提示:CS8370错误,那么这是什么原因导致的,这是由于使用了C# 7.3中不支持的功能,不支持该功能,那就是版本太低我们就需要升级更高的版本&…...
Raspbian安装云台
Raspbian安装云台 1. 源由2. 选型3. 组装4. 调试4.1 python3-print问题4.2 python函数入参类型错误4.3 缺少mjpg-streamer可执行文件4.4 缺失编译头文件和库4.5 python库缺失4.6 图像无法显示,但libcamera-jpeg测试正常4.7 异常IOCTL报错4.8 Git问题 5. 效果5.1 WEB…...
蓝桥杯理历年真题 —— 数学
1. 买不到的数目 这道题目,考得就是一个日常数学的积累,如果你学过这个公式的话,就是一道非常简单的输出问题;可是如果没学过,就非常吃亏,在考场上只能暴力求解,或是寻找规律。这就要求我们什么…...
自然语言处理--双向匹配算法
自然语言处理作业1--双向匹配算法 一、概述 双向匹配算法是一种用于自然语言处理的算法,用于确定两个文本之间的相似度或匹配程度。该算法通常使用在文本对齐、翻译、语义匹配等任务中。 在双向匹配算法中,首先将两个文本分别进行处理,然后…...
IDEA 2023.3.2 安装教程
1.下载2023.3.2版本IDEA 链接:https://pan.baidu.com/s/1RkXBLz6qxsd8VxXuvXCEMA?pwd5im6 提取码:5im6 2.安装 3.解压文件,进入,选择方式3 4.将下面文件夹复制到任意位置(不要有中文路径) 5.进入下面文…...
C语言常见面试题:什么是宏,宏的作用是什么?
宏在计算机科学中是一种批量处理程序命令,它是一种抽象的规则或模式,用于说明某一特定输入(通常是字符串)如何根据预定义的规则转换成对应的输出(通常也是字符串)。在编译时,预处理器会对宏进行…...
【0248】Background Writing实现机制分析
文章目录 1. 前言2. 有了checkpoint,为何还需要background writing?2.1 checkpoint和background writing有何差异? 如何协同工作?2.2 background writing如何工作? 职责是什么?1. 前言 本文是Background Writing进程理论篇,源码剖析实战篇会在后面给出。本文的主要内容…...
基于springboot+vue的教师工作量管理系统(前后端分离)
博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目背景…...
4-新建子模块(尝鲜)
新建子模块 Maven多模块下新建子模块流程案例。 1、新建业务模块目录,例如:ruoyi-test。 2、在ruoyi-test业务模块下新建pom.xml文件以及src\main\java,src\main\resources目录。 <?xml version"1.0" encoding"UTF-8&…...
反序列化字符串逃逸(上篇)
首先,必须先明白,这个点并不难,我给大家梳理一遍就会明白。 反序列化字符串逃逸就是序列化过程中逃逸出来字符,是不是很简单,哈哈哈! 好了,不闹了,其实: 这里你们只要懂…...
[C++]使用yolov5的onnx模型结合onnxruntime和bytetrack实现目标追踪
【官方框架地址】 yolov5框架:https://github.com/ultralytics/yolov5 bytetrack框架:https://github.com/ifzhang/ByteTrack 【算法介绍】 Yolov5与ByTetrack:目标追踪的强大组合 Yolov5和ByTetrack是两种在目标追踪领域具有显著影响力…...
i2c接口验证
用i2cdetect命令。 1,检测有几组i2c总线在系统上 i2cdetect -l 2,查询i2c总线上挂接的设备及设备的地址 i2cdetect -y <number> i2cdetect -y 0命令用于扫描I2C总线/dev/i2c-0,并列出所有在该总线上存在的有效I2C设备地址。...
GTE-Base-ZH模型服务监控与运维:使用Prometheus和Grafana
GTE-Base-ZH模型服务监控与运维:使用Prometheus和Grafana 当你把GTE-Base-ZH模型部署上线,开始对外提供服务后,心里是不是总有点不踏实?服务现在运行得怎么样?有没有人用?响应快不快?服务器资源…...
从温控器到无人机:PID参数整定的‘手感’秘籍,附C语言代码避坑指南
从温控器到无人机:PID参数整定的‘手感’秘籍与实战避坑指南 在工业自动化和智能硬件开发中,PID控制算法就像一位隐形的调音师,默默调节着系统的每一个细微变化。无论是缓慢升温的工业烘箱,还是高速响应的四旋翼无人机,…...
三角函数公式速查手册:从基础到进阶的实用指南
三角函数公式速查手册:从基础到进阶的实用指南 三角函数是数学中最基础也最重要的工具之一,无论是学生应对考试,还是开发者在图形编程、信号处理等领域的实际应用,都离不开这些公式的灵活运用。本文将系统整理从基础定义到高级变换…...
ai辅助开发,让快马智能生成centos下openclaw安装与配置的疑难解决方案
在CentOS系统上安装和配置OpenClaw这类工具时,经常会遇到各种依赖冲突、环境配置问题,以及需要定制化爬取规则的情况。传统方式下,我们需要手动查阅文档、调试命令,甚至反复尝试不同版本的依赖包,过程相当耗时。而借助…...
minikeyvalue架构解密:为什么它比SeaweedFS更简单高效?
minikeyvalue架构解密:为什么它比SeaweedFS更简单高效? 【免费下载链接】minikeyvalue A distributed key value store in under 1000 lines. Used in production at comma.ai 项目地址: https://gitcode.com/gh_mirrors/mi/minikeyvalue minikey…...
探索音乐资源获取:如何通过开源工具畅享高品质音乐体验
探索音乐资源获取:如何通过开源工具畅享高品质音乐体验 【免费下载链接】lxmusic- lxmusic(洛雪音乐)全网最新最全音源 项目地址: https://gitcode.com/gh_mirrors/lx/lxmusic- 在数字音乐时代,寻找稳定、免费且高质量的音乐资源成为许多音乐爱好…...
从长城杯赛题到实战:基于ZeroShell防火墙的威胁流量深度狩猎
1. 从CTF赛题到真实威胁狩猎的思维转换 第一次接触长城杯那道ZeroShell防火墙的赛题时,我还在纳闷:这种刻意设计的漏洞场景,在真实企业里真的存在吗?直到上个月帮某制造业客户做安全巡检,亲眼看到他们的ZeroShell 3.9.…...
FactoryBluePrints:颠覆性全流程工厂自动化解决方案
FactoryBluePrints:颠覆性全流程工厂自动化解决方案 【免费下载链接】FactoryBluePrints 游戏戴森球计划的**工厂**蓝图仓库 项目地址: https://gitcode.com/GitHub_Trending/fa/FactoryBluePrints FactoryBluePrints是戴森球计划的开源蓝图仓库,…...
【Coze】从零开始:AI Agent开发平台的入门指南
1. Coze平台初体验:零基础也能玩转AI开发 第一次接触Coze时,我完全被它的易用性震惊了。作为一个没有任何编程背景的市场专员,我居然在半小时内就做出了能自动回复客户咨询的AI助手。这个由字节跳动开发的AI Agent开发平台,真正实…...
游戏存档终极备份指南:用Ludusavi保护你的游戏进度
游戏存档终极备份指南:用Ludusavi保护你的游戏进度 【免费下载链接】ludusavi Backup tool for PC game saves 项目地址: https://gitcode.com/gh_mirrors/lu/ludusavi 你是否曾因电脑重装、系统崩溃或误操作而丢失珍贵的游戏存档?数百小时的游戏…...
