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

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

关于 WASM:1. WASM 基础原理

一、WASM 简介 1.1 WebAssembly 是什么&#xff1f; WebAssembly&#xff08;WASM&#xff09; 是一种能在现代浏览器中高效运行的二进制指令格式&#xff0c;它不是传统的编程语言&#xff0c;而是一种 低级字节码格式&#xff0c;可由高级语言&#xff08;如 C、C、Rust&am…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

有限自动机到正规文法转换器v1.0

1 项目简介 这是一个功能强大的有限自动机&#xff08;Finite Automaton, FA&#xff09;到正规文法&#xff08;Regular Grammar&#xff09;转换器&#xff0c;它配备了一个直观且完整的图形用户界面&#xff0c;使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...

蓝桥杯 冶炼金属

原题目链接 &#x1f527; 冶炼金属转换率推测题解 &#x1f4dc; 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V&#xff0c;是一个正整数&#xff0c;表示每 V V V 个普通金属 O O O 可以冶炼出 …...

WPF八大法则:告别模态窗口卡顿

⚙️ 核心问题&#xff1a;阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程&#xff0c;导致后续逻辑无法执行&#xff1a; var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题&#xff1a…...

Unity VR/MR开发-VR开发与传统3D开发的差异

视频讲解链接&#xff1a;【XR马斯维】VR/MR开发与传统3D开发的差异【UnityVR/MR开发教程--入门】_哔哩哔哩_bilibili...

【实施指南】Android客户端HTTPS双向认证实施指南

&#x1f510; 一、所需准备材料 证书文件&#xff08;6类核心文件&#xff09; 类型 格式 作用 Android端要求 CA根证书 .crt/.pem 验证服务器/客户端证书合法性 需预置到Android信任库 服务器证书 .crt 服务器身份证明 客户端需持有以验证服务器 客户端证书 .crt 客户端身份…...

深入浅出WebGL:在浏览器中解锁3D世界的魔法钥匙

WebGL&#xff1a;在浏览器中解锁3D世界的魔法钥匙 引言&#xff1a;网页的边界正在消失 在数字化浪潮的推动下&#xff0c;网页早已不再是静态信息的展示窗口。如今&#xff0c;我们可以在浏览器中体验逼真的3D游戏、交互式数据可视化、虚拟实验室&#xff0c;甚至沉浸式的V…...

【51单片机】4. 模块化编程与LCD1602Debug

1. 什么是模块化编程 传统编程会将所有函数放在main.c中&#xff0c;如果使用的模块多&#xff0c;一个文件内会有很多代码&#xff0c;不利于组织和管理 模块化编程则是将各个模块的代码放在不同的.c文件里&#xff0c;在.h文件里提供外部可调用函数声明&#xff0c;其他.c文…...