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

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框&#xff0c;很难让人不联想到SQL注入&#xff0c;但提示都说了不是SQL注入&#xff0c;所以就不往这方面想了 ​ 先查看一下网页源码&#xff0c;发现一段JavaScript代码&#xff0c;有一个关键类ctfs…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强&#xff0c;React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 &#xff08;1&#xff09;使用React Native…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

Java多线程实现之Callable接口深度解析

Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中&#xff0c;高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司&#xff0c;近期做出了一个重大技术决策&#xff1a;弃用长期使用的 Nginx&#xff0c;转而采用其内部开发…...

Android15默认授权浮窗权限

我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

是否存在路径(FIFOBB算法)

题目描述 一个具有 n 个顶点e条边的无向图&#xff0c;该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序&#xff0c;确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数&#xff0c;分别表示n 和 e 的值&#xff08;1…...

九天毕昇深度学习平台 | 如何安装库?

pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子&#xff1a; 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...