当前位置: 首页 > 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&#…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来&#xff0c;Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

JVM垃圾回收机制全解析

Java虚拟机&#xff08;JVM&#xff09;中的垃圾收集器&#xff08;Garbage Collector&#xff0c;简称GC&#xff09;是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象&#xff0c;从而释放内存空间&#xff0c;避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解&#xff08;7大核心步骤实战技巧&#xff09; 一、爬虫完整工作流程 以下是爬虫开发的完整流程&#xff0c;我将结合具体技术点和实战经验展开说明&#xff1a; 1. 目标分析与前期准备 网站技术分析&#xff1a; 使用浏览器开发者工具&#xff08;F12&…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器&#xff0c;可以帮助网站应对分布式拒绝服务攻击&#xff0c;有效识别和清理一些恶意的网络流量&#xff0c;为用户提供安全且稳定的网络环境&#xff0c;那么&#xff0c;高防服务器一般都可以抵御哪些网络攻击呢&#xff1f;下面…...

AspectJ 在 Android 中的完整使用指南

一、环境配置&#xff08;Gradle 7.0 适配&#xff09; 1. 项目级 build.gradle // 注意&#xff1a;沪江插件已停更&#xff0c;推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

HashMap中的put方法执行流程(流程图)

1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中&#xff0c;其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下&#xff1a; 初始判断与哈希计算&#xff1a; 首先&#xff0c;putVal 方法会检查当前的 table&#xff08;也就…...

Mysql中select查询语句的执行过程

目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析&#xff08;Parser&#xff09; 2.4、执行sql 1. 预处理&#xff08;Preprocessor&#xff09; 2. 查询优化器&#xff08;Optimizer&#xff09; 3. 执行器…...

TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?

在工业自动化持续演进的今天&#xff0c;通信网络的角色正变得愈发关键。 2025年6月6日&#xff0c;为期三天的华南国际工业博览会在深圳国际会展中心&#xff08;宝安&#xff09;圆满落幕。作为国内工业通信领域的技术型企业&#xff0c;光路科技&#xff08;Fiberroad&…...