当前位置: 首页 > news >正文

Java 日期时间API(Java 8及以上)

Java 8及以上版本提供了新的日期时间API,其中包括了LocalDate、LocalTime、LocalDateTime、ZonedDateTime、Duration、Period等类,这些类提供了更加丰富和灵活的日期时间操作方法。

LocalDate

LocalDate类表示一个本地日期,不包含时间和时区信息。LocalDate类的实例可以通过now()方法获取当前日期,也可以通过of()方法根据指定的年月日创建一个实例。

// 获取当前日期
LocalDate today = LocalDate.now();
System.out.println("今天的日期是:" + today);// 创建一个指定日期的LocalDate实例
LocalDate birthday = LocalDate.of(1990, 10, 1);
System.out.println("生日是:" + birthday);

LocalDate类提供了一系列的getXXX()方法,可以获取指定日期的年、月、日等信息,也提供了一些withXXX()方法和plusXXX()方法,可以修改和计算日期。

// 获取年、月、日
int year = today.getYear();
int month = today.getMonthValue();
int day = today.getDayOfMonth();
System.out.printf("今天是%d年%d月%d日%n", year, month, day);// 计算指定日期加上一周后的日期
LocalDate nextWeek = today.plusWeeks(1);
System.out.println("一周后的日期是:" + nextWeek);

LocalTime

LocalTime类表示一个本地时间,不包含日期和时区信息。LocalTime类的实例可以通过now()方法获取当前时间,也可以通过of()方法根据指定的时分秒创建一个实例。

// 获取当前时间
LocalTime now = LocalTime.now();
System.out.println("现在的时间是:" + now);// 创建一个指定时间的LocalTime实例
LocalTime time = LocalTime.of(14, 30, 0);
System.out.println("指定的时间是:" + time);

Java 日期时间的格式化

在实际应用中,我们常常需要将日期时间格式化为字符串,或者将字符串解析为日期时间。Java 提供了 SimpleDateFormat 类来实现日期时间格式化。下面是一个示例代码:

import java.text.SimpleDateFormat;
import java.util.Date;public class DateTimeFormatExample {public static void main(String[] args) {// 创建日期时间格式化对象SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 获取当前日期时间Date date = new Date();// 将日期时间格式化为字符串String formattedDateTime = dateFormat.format(date);// 输出格式化后的日期时间字符串System.out.println(formattedDateTime);}
}

上面的示例代码中,我们首先创建了一个 SimpleDateFormat 对象,并指定日期时间格式为 "yyyy-MM-dd HH:mm:ss"。然后获取当前日期时间,并将其格式化为字符串。最后输出格式化后的日期时间字符串。

除了将日期时间格式化为字符串外,我们还可以将字符串解析为日期时间。下面是一个示例代码:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;public class DateTimeParseExample {public static void main(String[] args) {// 创建日期时间格式化对象SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 定义日期时间字符串String dateTimeString = "2022-03-08 10:30:00";try {// 将日期时间字符串解析为日期时间对象Date dateTime = dateFormat.parse(dateTimeString);// 输出解析后的日期时间对象System.out.println(dateTime);} catch (ParseException e) {System.out.println("日期时间解析出错:" + e.getMessage());}}
}

上面的示例代码中,我们同样创建了一个 SimpleDateFormat 对象,并指定日期时间格式为 "yyyy-MM-dd HH:mm:ss"。然后定义了一个日期时间字符串 "2022-03-08 10:30:00"。最后使用 SimpleDateFormat 的 parse() 方法将日期时间字符串解析为日期时间对象,并输出解析后的日期时间对象。

Java 日期时间的计算

在实际应用中,我们经常需要对日期时间进行加减操作。Java 提供了 Date 类和 Calendar 类来实现日期时间的加减操作。下面是一个示例代码:

import java.util.Calendar;
import java.util.Date;public class DateTimeCalculationExample {public static void main(String[] args) {// 创建 Calendar 对象Calendar calendar = Calendar.getInstance();// 获取当前日期时间Date date = calendar.getTime();// 输出当前日期时间System.out.println("当前日期时间:" + date);// 在当前日期时间上加上一天calendar.add(Calendar.DATE, 1);// 获取加上一天后的日期时间Date tomorrow = calendar.getTime();// 输出加上一天后的日期时间System.out.println("明天的日期时间:" + tomorrow);}
}

上面的示例代码中,我们首先创建了一个 Calendar 对象,并使用 getInstance() 方法获取当前日期时间。然后输出当前日期时间。接着使用 add() 方法在当前日期时间上加上一天,并获取加上一天后可以使用DateTimeFormatter类将日期时间对象格式化为字符串。这个类提供了很多不同的格式选项,例如使用不同的日期和时间格式、时区等。下面是一个简单的例子:

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;public class DateTimeExample {public static void main(String[] args) {LocalDateTime now = LocalDateTime.now();DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");String formattedDateTime = now.format(formatter);System.out.println(formattedDateTime);}
}

在这个例子中,我们使用LocalDateTime.now()方法创建了一个表示当前日期和时间的LocalDateTime对象。然后,我们创建了一个DateTimeFormatter对象,并使用ofPattern()方法指定了日期时间格式。在这个例子中,我们选择了常见的格式"yyyy-MM-dd HH:mm:ss",它表示年份、月份、日期、小时、分钟和秒,中间用破折号和冒号分隔。最后,我们使用format()方法将LocalDateTime对象格式化为字符串,并将其打印出来。

除了格式化日期时间对象,Java 8还引入了一些新的日期时间类,例如LocalDateLocalTimeZonedDateTime,它们提供了更多的日期时间处理选项。例如,LocalDate类表示日期(年、月、日),LocalTime类表示时间(小时、分钟、秒)。

以下是一个使用LocalDateLocalTime类的简单示例:

import java.time.LocalDate;
import java.time.LocalTime;public class DateExample {public static void main(String[] args) {LocalDate date = LocalDate.now();LocalTime time = LocalTime.now();System.out.println("Today's date is: " + date);System.out.println("The time is: " + time);}
}

在这个例子中,我们使用LocalDate.now()LocalTime.now()方法创建了表示当前日期和时间的对象。然后,我们分别将它们打印出来。

总之,Java提供了强大的日期时间处理功能,包括基本的日期时间类和格式化工具,以及更多高级的日期时间类。这些工具在许多实际的开发任务中都是必不可少的,熟练掌握它们,有助于我们更好的进行开发。

相关文章:

Java 日期时间API(Java 8及以上)

Java 8及以上版本提供了新的日期时间API,其中包括了LocalDate、LocalTime、LocalDateTime、ZonedDateTime、Duration、Period等类,这些类提供了更加丰富和灵活的日期时间操作方法。 LocalDate LocalDate类表示一个本地日期,不包含时间和时区…...

DHCP的配置

实验目的熟悉DHCP的应用场景掌握DHCP的配置方法实验拓扑DHCP的配置如图15-2所示: 图15-2:DHCP的配置 实验步骤配置IP地址<Huawei>system-view Enter system view, return user view with Ctrl+Z....

JavaWeb14-线程池

目录 1.传统线程的缺点 2.线程池的定义 3.线程池的优点 4.线程池的创建/使用&#xff08;2类7种&#xff09; 4.1.通过Executors&#xff08;执行器&#xff09;自动创建&#xff08;6种&#xff09; ①Executors.newFixedThreadPool&#xff1a;创建⼀个固定⼤⼩的线程池…...

[qiankun+nuxt]子应用请求本地文件报错404

前言 目前公司的前端架构是qiankunnuxt做的微前端项目 问题说明 在子应用中&#xff0c;前端需要模拟一些数据&#xff0c;方便后期演示调整而不需要重新打包 所以将一些数据存储到了本地的json文件中&#xff0c;但是获取时报了404的错误&#xff0c;找不到该文件。 页面报错…...

【Qt网络编程】实现TCP协议通信

文章目录概要&#xff1a;本期主要讲解QT中对于TCP协议通信的实现。一、TCP协议二、Qt中TCP协议处理1.QTcpSocket2.QTcpServer三、Qt实现TCP通信1.客户端2.服务器端结尾概要&#xff1a;本期主要讲解QT中对于TCP协议通信的实现。 一、TCP协议 传输控制协议&#xff08;TCP&am…...

Webpack打包———处理样式资源

基本使用 本质上&#xff0c;webpack 是一个用于现代 JavaScript 应用程序的 静态模块打包工具。当 webpack 处理应用程序时&#xff0c;它会在内部从一个或多个入口点构建一个 依赖图(dependency graph)&#xff0c;然后将你项目中所需的每一个模块组合成一个或多个 bundles&a…...

VP记录:Codeforces Round 857 (Div. 2) A~D

传送门:CF A题 Likes: 这道题的题意很变态,十分的难懂,简直就是一坨shit,这场比赛最后被骂是有原因的 简单来说就是对于一个项目,每一个人都能对此加一或者减一,最后问你这个项目每一时刻最大和最小是多少.题目中只说明了只能点赞后才能取消,并没有解释存在取消操作必存在点…...

Docker常用项目实战演练

docker镜像源的修改 linux环境下编辑 /etc/docker/daemon.json vi /etc/docker/daemon.json #如添加如下网易镜像源 { "registry-mirrors": ["http://hub-mirror.c.163.com"] }docker run命令详细解释 日常工作中用的比较多的是docker run命令&#xff…...

Linux进程间通信-FIFO命名管道

Linux进程间通信-FIFO命名管道 1、概述 管道因为没有名称&#xff0c;所以只用于进程间的亲缘通信。为了克服这一缺点&#xff0c;提出了命名管道(FIFO)&#xff0c;又称命名管道、FIFO文件。 FIFO不同于无名管道&#xff0c;它提供与之关联的路径名&#xff0c;该路径名以FIF…...

【Kafka】记录一次基于connect-mirror-maker做的Kafka集群迁移完整过程

文章目录背景环境工具选型实操MM1MM2以MM2集群运行以Standalone模式运行验证附录MM2配置表其他背景 一个测试环境的kafka集群&#xff0c;Topic有360&#xff0c;Partition有2000&#xff0c;部署在虚拟机上&#xff0c;由于多方面原因&#xff0c;要求迁移至k8s容器内&#x…...

实现VOC数据集与COCO数据集格式转换

实现VOC数据集与COCO数据集格式转换2、将voc数据集的xml转化为coco数据集的json格式2、COCO格式的json文件转化为VOC格式的xml文件3、将 txt 文件转换为 Pascal VOC 的 XML 格式<annotation><folder>文件夹目录</folder><filename>图片名.jpg</file…...

常用的密码算法有哪些?

我们将密码算法分为两大类。 对称密码&#xff08;密钥密码&#xff09;——算法只有一个密钥。如果多个参与者都知道该密钥&#xff0c;该密钥 也称为共享密钥。非对称密码&#xff08;公钥密码&#xff09;——参与者对密钥的可见性是非对称的。例如&#xff0c;一些参与者仅…...

SNS (Simple Notification Service)简介

SNS (Simple Notification Service) 是一种完全托管的发布/订阅消息收发和移动通知服务&#xff0c;用于协调向订阅终端节点和客户端的消息分发。 和SQS (Simple Queue Service)一样&#xff0c;SNS也可以轻松分离和扩展微服务&#xff0c;分布式系统和无服务应用程序&#xf…...

JVM初步理解浅析

一、JVM的位置 JVM的位置 JVM在操作系统的上一层&#xff0c;是运行在操作系统上的。JRE是运行环境&#xff0c;而JVM是包含在JRE中 二、JVM体系结构 垃圾回收主要在方法区和堆&#xff0c;所以”JVM调优“大部分也是发生在方法区和堆中 可以说调优就是发生在堆中&#xf…...

【巨人的肩膀】MySQL面试总结(一)

&#x1f4aa; 目录&#x1f4aa;1、什么是ER图2、数据库范式了解吗3、超键、候选键、主键、外键分别是什么&#xff1f;4、为什么不推荐使用外键与级联5、什么是存储过程6、drop、delete与truncate区别7、数据库设计通常分为那几步8、什么是关系型数据库9、什么是SQL10、MySQL…...

【数据结构之树】——什么是树,树的特点,树的相关概念和表示方法以及在实际的应用。

文章目录一、1.树是什么&#xff1f;2.树的特点二、树的相关概念三、树的表示方法1.常规方法表示树2.使用左孩子右兄弟表示法3. 使用顺序表来存储父亲节点的下标三、树在实际的应用总结一、1.树是什么&#xff1f; 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n&…...

JavaScript语法

文章目录一、JavaScript是什么&#xff1f;JavaScript引入方式二、基础语法书写语法输出语句变量数据类型运算符流程控制语句数组函数JS变量作用域对象一、JavaScript是什么&#xff1f; JavaScript&#xff1a;是一门跨平台的脚本语言&#xff0c;用来控制网页行为&#xff0…...

【BIOS/UEFI】HII 基本框架及概述

HII&#xff08;Human Interface Infrastructure &#xff09;定义了一套管理用户输入的基础框架。HII数据库主要提供用户安装、卸载以及使用各种字符串、字体和图片等资源的接口。 HID Devices 是用户输入设备&#xff0c;如键盘、串口和网络&#xff1b;Display Devices 是输…...

sprintf(...)溢出边界导致程序崩溃的问题

文章目录小结问题及解决参考小结 使用sprintf(...)进行格式化是一种标准的做法&#xff0c;但是这样做是有一个极大的风险&#xff0c;由于sprintf(...)不进行边界检查&#xff0c;这样会有写操作溢出边界的风险&#xff0c;并导致程序崩溃。本文进行了简单写操作溢出边界的测…...

公式推导+dfs简版

写在前面的话&#xff1a;心可以冷&#xff0c;但手不能停 第一题&#xff1a;C. Flexible String 题目大意&#xff1a;给一个aaa字符串和bbb字符串和数字kkk&#xff0c;首先设置一个计数器cntcntcnt,其中可以对aaa字符串做以下操作&#xff1a;替换aaa中的一个字母xxx&#…...

量子机器学习在医疗影像中的技术迷思与测试验证陷阱

当量子计算遭遇医学影像近年来&#xff0c;"量子赋能医疗影像"成为热门概念&#xff0c;宣称通过量子算法&#xff08;如QSVM、量子卷积&#xff09;可大幅提升病灶识别精度和图像重建效率。然而&#xff0c;作为软件测试从业者&#xff0c;我们需警惕技术炒作背后的…...

效率提升秘籍:使用快马AI一键生成动漫视频批量处理与格式转换工具

效率提升秘籍&#xff1a;使用快马AI一键生成动漫视频批量处理与格式转换工具 最近接手了一个动漫视频处理的项目&#xff0c;需要将大量不同格式的动漫视频统一转换为高清MP4格式&#xff0c;并生成预览缩略图。手动处理不仅耗时耗力&#xff0c;还容易出错。于是我开始寻找自…...

KOReader终极指南:如何打造你的完美电子墨水屏阅读体验

KOReader终极指南&#xff1a;如何打造你的完美电子墨水屏阅读体验 【免费下载链接】koreader An ebook reader application supporting PDF, DjVu, EPUB, FB2 and many more formats, running on Cervantes, Kindle, Kobo, PocketBook and Android devices 项目地址: https:…...

【测试之道】第四篇:分层测试论 —— 金字塔、奖杯与蜂巢:构建你的质量防御阵型

专栏进度&#xff1a;04 / 10 (测试理论专题) 在不同的架构&#xff08;单体、微服务、前端驱动&#xff09;下&#xff0c;测试资源的分配比例是完全不同的。盲目套用模板是测试经理最容易犯的错误。 一、 经典模型&#xff1a;测试金字塔 (Testing Pyramid) 由 Mike Cohn 提出…...

KOReader 2025.04:重新定义电子墨水屏阅读

KOReader 2025.04&#xff1a;重新定义电子墨水屏阅读 【免费下载链接】koreader An ebook reader application supporting PDF, DjVu, EPUB, FB2 and many more formats, running on Cervantes, Kindle, Kobo, PocketBook and Android devices 项目地址: https://gitcode.co…...

GZDoom未来展望:10个开源游戏引擎的发展趋势和路线图

GZDoom未来展望&#xff1a;10个开源游戏引擎的发展趋势和路线图 【免费下载链接】gzdoom GZDoom is a feature centric port for all Doom engine games, based on ZDoom, adding an OpenGL renderer and powerful scripting capabilities 项目地址: https://gitcode.com/gh…...

OpCore-Simplify:开源系统硬件适配自动化的技术突破

OpCore-Simplify&#xff1a;开源系统硬件适配自动化的技术突破 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 在开源系统定制领域&#xff0c;硬件兼…...

AI报告文档审核赋能人才培养:IACheck打造环境检测人机协同审核虚拟仿真新体系

在环境检测行业持续走向精细化与规范化的过程中&#xff0c;报告审核能力逐渐成为影响整体质量的重要因素。然而&#xff0c;与检测设备和分析技术不断升级相比&#xff0c;审核人员的培养却长期依赖经验积累与“师带徒”模式&#xff0c;这种方式虽然能够传递实践经验&#xf…...

MDS vs PCA:哪种降维方法更适合你的数据?

MDS与PCA深度对比&#xff1a;从算法原理到实战选型指南 当面对高维数据时&#xff0c;降维技术就像一把打开数据奥秘的钥匙。在众多降维方法中&#xff0c;多维尺度变换(MDS)和主成分分析(PCA)是最常被比较的两种经典技术。它们都能将复杂的高维数据简化为更易理解的二维或三维…...

TempleOS 技术解析:从神圣代码到单地址空间设计的独特哲学

1. TempleOS的诞生&#xff1a;当代码遇见信仰 第一次听说TempleOS时&#xff0c;我正泡在技术论坛里闲逛。这个操作系统的名字就透着股神秘感——"神殿操作系统"。点开详细介绍后更震惊了&#xff1a;这居然是一个程序员声称按照"上帝指示"开发的系统&…...