Java基础关键_013_日期处理

目  录

一、传统 API

1.System.currentTimeMillis()

(1)说明

(2)实例

2.构造方法

(1)说明

(2)无参构造

(3)有参构造

3.日期格式化

(1)说明

(2)实例

4.日历

(1)get() 与 getTime()

(2)set() 与 setTime()

二、全新 API

1.LocalDate、LocalTime、LocalDateTime

2.toEpochMilli 新时间戳

3.Duration 时间差

4.Period 日期差

5.TemporalAdjusters 时间矫正器

6.DateTimeFormatter 日期格式化


一、传统 API

1.System.currentTimeMillis()

(1)说明

  1. 获取自 1970年1月1日0时0分0秒到系统当前时间的总毫秒数;
  2. 1s (秒) = 1000ms(毫秒);
  3. 1ms(毫秒) = 1000μs(微秒);
  4. 1μs(微秒) = 1000ns(纳秒);
  5. 1ns (纳秒)= 1000ps(皮秒)。

(2)实例

public class DateTest {public static void main(String[] args) {long time = System.currentTimeMillis();System.out.println(time);   // 1740723807436}
}

2.构造方法

(1)说明

        此处是 java.util.Date ,而 java.sql.Date 是 java.util.Date 的子类。


(2)无参构造

public class DateTest {public static void main(String[] args) {// 获取当前时间Date d1 = new Date();System.out.println(d1);   // Fri Feb 28 13:56:29 CST 2025}
}

(3)有参构造

public class DateTest {public static void main(String[] args) {// 获取当前时间Date d1 = new Date(System.currentTimeMillis());System.out.println(d1);   // Fri Feb 28 14:02:24 CST 2025// 获取指定时间Date d2 = new Date(3000);System.out.println(d2); // Thu Jan 01 08:00:03 CST 1970}
}

3.日期格式化

(1)说明

  1. 需要使用 java.text.SimpleDateFormat 类,其父类是 DateFormat ;
  2. 日期和时间格式由日期和时间模式字符串指定,模式字母如下表所示。

模式字母

符号日期或时间组件说明例子
G年号文本AD
y199696
Y周 年200909
M一年中的月份(上下文相关)JulyJul07
L一年中的月份 (独立形式)JulyJul07
w一年中的周27
W每月的周2
D一年中的天189
d当月的日期10
F当月中的星期几2
E星期名称文本TuesdayTue
u

星期数

(1 = 星期一,...,7 = 星期日)

1
a上午/下午标记文本PM
H一天中的小时 (0-23)0
k一天中的小时 (1-24)24
K上午 / 下午 (0-11) 小时数0
h上午 / 下午 (1-12)12
m分钟(小时)30
s秒(分钟)55
S毫秒978
z时区通用时区Pacific Standard TimePSTGMT-08:00
Z时区RFC 822 时区-0800
X时区ISO 8601 时区-08-0800-08:00

(2)实例

public class DateTest {public static void main(String[] args) throws ParseException {Date d1 = new Date();System.out.println(d1);   // Fri Feb 28 14:29:31 CST 2025SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");String format = sdf.format(d1);System.out.println(format); // 2025年02月28日 14:29:31String time = "2000年06月16日 08:08:08";Date d2 = sdf.parse(time);System.out.println(d2); // Fri Jun 16 08:08:08 CST 2000}
}

4.日历

(1)get() 与 getTime()

public class DateTest {public static void main(String[] args) {Calendar calendar = Calendar.getInstance(); // 获取当前时间的日历对象,调用一个静态方法System.out.println(calendar.getTime()); // 获取当前时间System.out.println(calendar.get(Calendar.YEAR));    // 获取年份System.out.println(calendar.get(Calendar.MONTH) + 1);   // 获取月份,从0开始,需要加1System.out.println(calendar.get(Calendar.DAY_OF_MONTH));    // 获取本月的第几天System.out.println(calendar.get(Calendar.DAY_OF_WEEK)); // 获取星期,从1开始,1表示星期天System.out.println(calendar.get(Calendar.DAY_OF_YEAR)); // 获取本年的第几天System.out.println(calendar.get(Calendar.HOUR));    // 获取小时,12小时制System.out.println(calendar.get(Calendar.HOUR_OF_DAY)); // 获取小时,24小时制System.out.println(calendar.get(Calendar.MINUTE));  // 获取分钟System.out.println(calendar.get(Calendar.SECOND));  // 获取秒System.out.println(calendar.get(Calendar.MILLISECOND)); // 获取毫秒}
}

(2)set() 与 setTime()

public class DateTest {public static void main(String[] args) throws ParseException {/*** set()*/Calendar calendar = Calendar.getInstance(); // 获取当前时间的日历对象calendar.set(Calendar.YEAR, 1945);calendar.set(Calendar.MONTH, Calendar.SEPTEMBER);calendar.set(Calendar.DAY_OF_MONTH, 15);System.out.println("日本无条件投降:" + calendar.get(Calendar.YEAR) + "年" + calendar.get(Calendar.MONTH) + "月" + calendar.get(Calendar.DAY_OF_MONTH) + "日"); // 日本无条件投降:1945年8月15日calendar.set(2020, Calendar.JANUARY, 1, 8, 8, 8);System.out.println(calendar.getTime()); // Wed Jan 01 08:08:08 CST 2020/*** setTime()*/String time = "2022-02-24";SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Date date = sdf.parse(time);calendar.setTime(date);System.out.println(calendar.getTime()); // Thu Feb 24 00:00:00 CST 2022}
}

二、全新 API

        由于传统 API 存在线程安全问题,jdk 8 提供了一套全新 API ,在 java.time 包下。

1.LocalDate、LocalTime、LocalDateTime

public class DateTest {public static void main(String[] args) throws ParseException {System.out.println("【获取系统当前日期时间】");System.out.println(LocalDate.now());    // 2025-02-28System.out.println(LocalTime.now());    // 17:19:21.671997600System.out.println(LocalDateTime.now());    // 2025-02-28T17:19:21 .671997600System.out.println("==================================");System.out.println("【获取指定日期时间】");System.out.println(LocalDate.of(2000, 1, 1));System.out.println(LocalTime.of(8, 16, 26, 36));System.out.println("==================================");System.out.println("【加日期时间】");System.out.println(LocalDateTime.now().plusYears(3).plusMonths(3).plusDays(1));System.out.println("==================================");System.out.println("【减日期时间】");System.out.println(LocalDateTime.now().minusYears(3).minusMonths(3).minusDays(1));}
}

2.toEpochMilli 新时间戳

public class DateTest {public static void main(String[] args) throws ParseException {// UTC 时间戳Instant now = Instant.now();System.out.println(now);    // 2025-02-28T10:38:03.122192700ZSystem.out.println("时间戳:" + now.toEpochMilli());    // 时间戳:1740739083122}
}

3.Duration 时间差

public class DateTest {public static void main(String[] args) throws ParseException {LocalDateTime ldt1 = LocalDateTime.of(2019, 12, 12, 0, 0, 0);LocalDateTime ldt2 = LocalDateTime.now();Duration between = Duration.between(ldt1, ldt2);System.out.println("距离新冠肺炎爆发已经:" + between.toDays() + "天"); // 距离新冠肺炎爆发已经:1905天System.out.println("距离新冠肺炎爆发已经:" + between.toHours() + "小时");   // 距离新冠肺炎爆发已经:45738小时System.out.println("距离新冠肺炎爆发已经:" + between.toMinutes() + "分钟"); // 距离新冠肺炎爆发已经:2744326分钟System.out.println("距离新冠肺炎爆发已经:" + between.toMillis() + "毫秒");  // 距离新冠肺炎爆发已经:164659582897毫秒}
}

4.Period 日期差

public class DateTest {public static void main(String[] args) throws ParseException {LocalDate ld1 = LocalDate.of(2019, 12, 12);LocalDate ld2 = LocalDate.now();Period between = Period.between(ld1, ld2);System.out.println("距离新冠病毒爆发已经过去:" + between.getYears() + "年" + between.getMonths() + "月" + between.getDays() + "天");   // 距离新冠病毒爆发已经过去:5年2月16天}
}

5.TemporalAdjusters 时间矫正器

public class DateTest {public static void main(String[] args) throws ParseException {LocalDateTime ldt = LocalDateTime.now();System.out.println(ldt);    // 2025-02-28T20:25:50.585827System.out.println(ldt.with(TemporalAdjusters.firstDayOfYear()));   // 2025-01-01T20:25:50.585827System.out.println(ldt.with(TemporalAdjusters.lastDayOfYear()));    // 2025-12-31T20:25:50.585827System.out.println(ldt.with(TemporalAdjusters.firstDayOfMonth()));  // 2025-02-01T20:25:50.585827System.out.println(ldt.with(TemporalAdjusters.lastDayOfMonth()));   // 2025-02-28T20:25:50.585827System.out.println(ldt.with(TemporalAdjusters.next(DayOfWeek.MONDAY))); // 2025-03-03T20:25:50.585827}
}

6.DateTimeFormatter 日期格式化

public class DateTest {public static void main(String[] args) throws ParseException {LocalDateTime ldt = LocalDateTime.now();DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");System.out.println(dtf.format(ldt));    // 2025年02月28日 20:33:55LocalDateTime ldt1 = LocalDateTime.parse("2020年01月01日 08:08:08", dtf);System.out.println(ldt1);   // 2020-01-01T08:08:08}
}

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

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

相关文章

51单片机中reg52.h与regx52.h在进行位操作时的不同

reg52.h中不能使用例如 P2_0;这样的定义 而只能使用 P2^0;这样的定义 但是都不可以对位进行直接赋值操作; 而 regx52.h中可以使用 P2_0和P2^0;但是只有使用下划线的才可以对位进行赋值操作 例如P2_0 1; 但不可以是P2^0 1; 在 C 语言中,…

基于Rook的Ceph云原生存储部署与实践指南(上)

#作者:任少近 文章目录 1 Ceph环境准备2 rook部署ceph群集2.1 Rook 帮助地址2.2 安装ceph2.3 获取csi镜像2.4 Master参加到osd2.5 设置默认存储 3 Rook部署云原生RBD块存储3.1 部署storageclass资源3.2 部署WordPress使用RBD3.3 WordPress访问 4 Rook部署云原生RGW…

FastExcel与Reactor响应式编程深度集成技术解析

一、技术融合背景与核心价值 在2025年企业级应用开发中,大规模异步Excel处理与响应式系统架构的结合已成为技术刚需。FastExcel与Reactor的整合方案,通过以下技术协同实现突破性性能: 内存效率革命:FastExcel的流式字节操作与Re…

DeepSeek R1/V3满血版——在线体验与API调用

前言:在人工智能的大模型发展进程中,每一次新模型的亮相都宛如一颗投入湖面的石子,激起层层波澜。如今,DeepSeek R1/V3 满血版强势登场,为大模型应用领域带来了全新的活力与变革。 本文不但介绍在线体验 DeepSeek R1/…

Spring Data JPA 中的分页实现:从 BasePage 到 Pageable

文章目录 Spring Data JPA 中的分页实现:从 BasePage 到 Pageable背景:为什么需要分页?认识 BasePage 类深入 toPageable() 方法1. 处理页码和页面大小2. 处理排序方向3. 处理排序字段4. 生成 Pageable 对象 实战:如何使用 BasePa…

Android Studio 新版本Gradle发布本地Maven仓库示例

发布代码到JitPack示例:https://blog.csdn.net/loutengyuan/article/details/145938967 以下是基于 Android Studio 24.2.2(Gradle 8.10.2 AGP 8.8.0 JDK17) 的本地 Maven 仓库发布示例,包含aar和jar的不同配置: 1.…

python量化交易——金融数据管理最佳实践——qteasy创建本地数据源

文章目录 qteasy金融历史数据管理总体介绍本地数据源——DataSource对象默认数据源查看数据表查看数据源的整体信息最重要的数据表其他的数据表 从数据表中获取数据向数据表中添加数据删除数据表 —— 请尽量小心,删除后无法恢复!!总结 qteas…

Android中使用Robolectric测试点击事件(不需要手机)

文章目录 一、前言二、简单示例三、参考文档 一、前言 Robolectric 是一个由 Google 维护的开源 Android 测试框架,它允许你以 Android 运行时环境运行单元测试。 Robolectric 提供了一个模拟 Android 运行时环境,允许你测试你的代码是否正确地使用 And…

Spring Boot 接口 JSON 序列化优化:忽略 Null 值的九种解决方案详解

一、针对特定接口null的处理: 方法一:使用 JsonInclude 注解 1.1 类级别:在接口返回的 ‌DTO 类或字段‌ 上添加 JsonInclude 注解,强制忽略 null 值: 类级别:所有字段为 null 时不返回 JsonInclude(Js…

ds回答-开源llm应用开发平台

以下是几个著名的开源 LLM 应用开发平台,涵盖不同场景和技术特点: 1. Dify 特点:低代码 / 无代码开发、支持 RAG 检索、Agent 智能体、模型管理、LLMOps 全流程优化。核心功能:可视化工作流编排、数百种模型兼容(如 GP…

LDR6020 PD3.1 协议芯片在特定设备中的应用

在电子设备互联互通的时代,芯片技术成为提升设备性能与功能的关键驱动力。LDR6020 PD3.1 协议芯片以其出色的性能,在 TYPE-C 台式显示器 / 便携显示器、一拖二快充线以及手机电脑转接器等设备中展现出独特价值,为用户带来更便捷、高效的使用体…

wzl-django学习

####################################################总的urls.py from django.contrib import admin from django.urls import path,include, re_path from django.views.static import serve from django.conf import settings from drf_yasg import openapi from drf_yas…

python -ssh学习

def exe_sshcmd(ip,username,userpswd,port,cmd): """ 功能:SSH登录到指定设备,并执行对应的命令 入参:前四项为ssh登录shell的ip和port,具备管理员权限的用户名和密码, cmd可以…

PDF处理控件Aspose.PDF教程:使用 Python 将 PDF 转换为 TIFF

TIFF文件是高质量图像的首选。它们广泛用于印刷、存档和图形设计。企业通常需要转换PDF文档以获得更好的兼容性。了解如何以编程方式执行此转换可以节省时间和资源。在这篇教程中,我们将探讨如何使用 Python 将 PDF 转换为 TIFF。 本文涵盖以下主题: P…

服务器IPMI用户名、密码批量检查

背景 大规模服务器部署的时候,少不了较多的网管和监测平台,这些平台会去监控服务器的性能、硬件等指标参数,为了便于管理和控制,则需要给服务器IPMI带外管理添加较多的用户,这就需要对较多的服务器检查所对应的IPMI用…

< 自用文儿 > Gobuster 暴力扫描工具与 SecLists 安全测试词表集合

Ethice 道德问题 GFW 的保护下,很多的设备操作系统是停留在更老的版本,应用软件也是,因此很多的漏洞没有被修复。通讯没有使用加密,例如网页没有使用 HTTPS 网站很多。几乎是半裸的在网络上等着被食。 不做恶是下限。 环境&…

【Cadence射频仿真学习笔记】2.4GHz低噪放LNA仿真设计

课程分为3个部分, 一、LNA结构与噪声优化方法 噪声优化的方法是:限定功耗的噪声和功率同时匹配噪声匹配和功率匹配一般不会同时达到, 对于PCSNIM结构的噪声分析,我们只需要了解与哪些参数有关优化思路是:1.信号源阻抗…

【洛谷入门赛】B4042 顺序结构 202410 场

题意 给你一个变量 a a a:小 Y 会让 a a a 先加 5 5 5 再把它们的和乘 3 3 3 最后输出;小 L 会让 a a a 先乘 3 3 3 再加 5 5 5 最后输出。 要求出小 Y 和小 L 分别会输出什么东西。 思路 这道题按照题目意思模拟就可以了,重点是考…

Android13修改多媒体默认音量

干就完了! 设置音量为最大音量,修改如下: /framework/base/media/java/android/media/AudioSystem.java/** hide */public static int[] DEFAULT_STREAM_VOLUME new int[] {4, // STREAM_VOICE_CALL7, // STREAM_SYSTEM5, // STREAM_RING-5, // STREAM_MUSIC15, // STREAM…

【Azure 架构师学习笔记】- Azure Databricks (13) -- 搭建Medallion Architecture part 1

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Databricks】系列。 接上文 【Azure 架构师学习笔记】- Azure Databricks (12) – Medallion Architecture简介 前言 上文已经介绍了关于Medallion的知识,本文开始用ADB 来实现, 但是基于内容较…