Java 日期时间

Java 提供了丰富的日期时间处理功能,主要集中在 `java.time` 包下。`java.time` 包是从 Java 8 开始引入的,设计用于解决旧的 `java.util.Date` 和 `java.util.Calendar` 类存在的问题,提供了更加清晰、易用和线程安全的 API。

### 主要类和接口

1. **LocalDate**: 表示日期,例如 `2024-07-15`。
2. **LocalTime**: 表示时间,例如 `14:43:35`。
3. **LocalDateTime**: 表示日期和时间,例如 `2024-07-15T14:43:35`。
4. **ZonedDateTime**: 表示带时区的日期和时间。
5. **Instant**: 表示时间戳,通常用于机器时间。
6. **Duration**: 表示时间段。
7. **Period**: 表示日期段。

### 示例代码

```java
import java.time.LocalDate;
import java.time.LocalTime;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class DateTimeExample {
    public static void main(String[] args) {
        // 获取当前日期
        LocalDate currentDate = LocalDate.now();
        System.out.println("当前日期: " + currentDate); // 输出格式:2024-07-15

        // 获取当前时间
        LocalTime currentTime = LocalTime.now();
        System.out.println("当前时间: " + currentTime); // 输出格式:14:43:35.123456789 (具体时间会有微秒部分)

        // 获取当前日期和时间
        LocalDateTime currentDateTime = LocalDateTime.now();
        System.out.println("当前日期和时间: " + currentDateTime); // 输出格式:2024-07-15T14:43:35.123456789

        // 格式化日期时间
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        String formattedDateTime = currentDateTime.format(formatter);
        System.out.println("格式化后的日期时间: " + formattedDateTime); // 输出格式:2024-07-15 14:43:35

        // 解析字符串到日期时间
        String dateTimeString = "2023-12-25 10:30:00";
        LocalDateTime parsedDateTime = LocalDateTime.parse(dateTimeString, formatter);
        System.out.println("解析后的日期时间: " + parsedDateTime); // 输出格式:2023-12-25T10:30

        // 演示 Duration 和 Period
        LocalDateTime start = LocalDateTime.of(2023, 1, 1, 10, 0);
        LocalDateTime end = LocalDateTime.of(2023, 1, 1, 11, 30);
        Duration duration = Duration.between(start, end);
        System.out.println("时间段: " + duration); // 输出格式:PT1H30M

        LocalDate date1 = LocalDate.of(2023, 1, 1);
        LocalDate date2 = LocalDate.of(2024, 1, 1);
        Period period = Period.between(date1, date2);
        System.out.println("日期段: " + period); // 输出格式:P1Y

        // 更复杂的时区操作需要使用 ZonedDateTime
        // ZonedDateTime zonedDateTime = ZonedDateTime.of(...);
    }
}
```

### 总结

Java 的 `java.time` 包提供了强大且易于使用的日期时间处理功能,支持格式化、解析、计算时间段和日期段等操作,使得在处理日期时间时更加方便和安全。通过合理利用这些类和方法,可以有效避免传统 `java.util.Date` 和 `java.util.Calendar` 类所带来的问题。

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

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

相关文章

【postgresql】角色(Role)

PostgreSQL 中,角色(Role)是一个重要的概念,用于管理数据库的访问权限和用户身份。角色可以被视为用户或组,具体取决于它们的配置方。 角色属性 角色可以具有多种属性: LOGIN:允许角色登录数据…

Flask包算法服务

常规包算法服务,就是比较简单,直接起一个fastapi就可以了。 import time import asyncio from aidraw import engineer_log as eng from fastapi import FastAPI from pydantic import BaseModel from typing import Optional from aidraw.ardraw import run_aidraw_api# 起…

Floyd算法——AcWing 343. 排序

目录 Floyd算法 定义 运用情况 注意事项 解题思路 基本步骤 AcWing 343. 排序 题目描述 运行代码 代码思路 改进思路 Floyd算法 定义 Floyd算法,全称Floyd-Warshall算法,是一种用于解决图中所有顶点对之间的最短路径问题的动态规划算法。…

一文读懂Java并发编程基础知识

什么是并发? 并发是指在某个时间段内,多任务交替处理的能力。比如说,你有一台单核心CPU电脑,注意必须是以单核心来理解下面的例子才是正确的。你可以利用电脑边听音乐,边写PPT,还能随时斗上一盘地主。这些…

基于java+springboot+vue实现的实验室管理系统(文末源码+Lw)127

基于SpringBootVue的实现的实验室管理系统(源码数据库万字Lun文流程图ER图结构图演示视频软件包) 系统功能: 实验室管理系统 管理员功能有个人中心,学生管理,教师管理,公告信息管理,知识库管理…

杭州高校大学智能制造实验室数字孪生可视化系统平台建设项目验收

杭州高校大学智能制造数字孪生技术作为智能制造的重要支撑,通过构建虚拟世界的镜像,实现对物理世界的实时监控、预测和优化。杭州高校大学智能制造实验室数字孪生可视化系统平台建设项目,旨在通过引入先进的数字孪生技术,构建一个…

Log4j2原理及应用详解(四)

本系列文章简介: 在软件开发过程中,日志记录是一个不可或缺的重要环节。它不仅帮助开发者在开发阶段追踪和调试代码,还在软件运行阶段提供了宝贵的运行信息和错误追踪能力。随着软件系统的日益复杂,对日志记录的需求也变得越来越高…

鼠标的形状

鼠标的形状多样,主要取决于其设计、用途以及制造商的创意。一般来说,鼠标的基本形状包括以下几个部分: 主体部分: 大多数鼠标的主体部分呈流线型或稍微扁平的形状,以适应手掌握持。主体部分通常包含按键和滚轮&#x…

ESP32-S3多模态交互方案在线AI语音设备应用,启明云端乐鑫代理商

随着物联网(IoT)和人工智能(AI)技术的飞速发展,嵌入式设备正逐渐变得智能化,让我们的家庭生活变得更加智能化和个性化。 随着大型语言模型的不断进步和优化,AI语音机器人设备能够实现更加智能、…

自定义 Java ClassLoader:深入探索

在 Java 应用程序中,类加载器(ClassLoader)是实现动态加载类和资源的关键组件。默认情况下,Java 提供了一个类加载器层次结构,但有时我们需要自定义类加载器来满足特定的需求,比如加载加密的类文件、从数据…

mysql链接错误,unblock with ‘mysqladmin flush-hosts‘“

message from server: “Host ‘172.16.39.238’ is blocked because of many connection errors; unblock with ‘mysqladmin flush-hosts’”. 解决步骤: show global variables like ‘%max_connect_errors%’; set global max_connect_errors1000; flush host…

Springboot + JWT 的 Token 登录验证

目录 项目结构 一、 引入依赖 二、自定义Auth认证注解 三、 编写登录拦截器 四、定义跨域拦截器 五、 定义全局异常处理器 六、定义工具类 1. 统一错误状态码 2.统一响应类 3.Token工具类 七、 编写实体类 八、 定义控制器 1.定义登录控制器类 2 定义报错处理器 …

【单片机毕业设计选题24067】-基于STM32的智能衣控制系统

系统功能: 系统上电后OLED显示“欢迎使用智能衣服系统请稍后”两秒钟后进入正常页面显示, 第一行显示系统状态信息 第二行显示获取到体温值 第三行显示设定的高体温阈值和低体温阈值 第四行显示获取到心率和血氧值 短按B3按键调高心率设定高阈值 短按B4按键调…

每日一道算法题 994. 腐烂的橘子

题目 994. 腐烂的橘子 - 力扣(LeetCode) Python class Solution:def orangesRotting(self, grid: List[List[int]]) -> int:# 分类,挑好坏橘子m,nlen(grid),len(grid[0])have_goodFalserot_orange[]for r in range(m):for c in range(n…

浏览器渲染流程

渲染流水线 生成dom树 根据html生成dom树 生成cssom树 解析css生成一颗cssom树 document.styleSheets构建布局树-layout 根据dom树与cssom树构建一棵layout布局树,会移除不可见部分, 如display:none的dom, 但visible: hidden这种会保留 同时会计算可见部分的几何位置 划…

【学术会议征稿】2024年第三届信息学,网络与计算技术国际学术会议(ICINC2024)

2024年第三届信息学,网络与计算技术国际学术会议(ICINC2024) 2024 3rd International Conference on Informatics,Networking and Computing (ICINC 2024) 2024年第三届信息学,网络与计算技术国际学术会议(ICINC2024)将于2024年10月25-27日于中国郑州召…

Vue中使用mind-map实现在线思维导图

概述 在前面的文章Vue中实现在线画流程图实现中介绍了流程图的在线绘制,在本文,给大家分享一下基于mind-map实现在线的思维导图,并实现:1. 导图导出为图片;2. 打开xmind文件。 实现效果 实现 1. mind-map简介 simp…

使用Druid完成SpringBoot集成MySql、DM(达梦)数据库数据源操作

业务背景 一个方法里&#xff0c;对A数据源需要进行查询&#xff0c;B数据源进行插入(切面插入访问数据&#xff0c;日志)。 详细业务是查询业务数据&#xff0c;同时主数据库记录访问日志。 第一步依赖先行 <dependency><groupId>mysql</groupId><art…

正确选择指挥中心操作台厂家的因素

在当今数字化和信息化快速发展的时代&#xff0c;指挥中心操作台在各类机构和企业的运营中发挥着至关重要的作用。然而&#xff0c;选择一个合适的指挥中心操作台厂家并非易事。以下是一些选择指挥中心操作台厂家的考虑因素。 一、产品质量与工艺 要考察厂家的产品质量和工艺水…

C语言中的指针:掌握内存的钥匙

C语言中的指针&#xff1a;掌握内存的钥匙 引言 C语言是一种结构化编程语言&#xff0c;它提供了对硬件底层的直接访问&#xff0c;其中最强大的特性之一就是指针。指针允许程序员直接操作内存地址&#xff0c;这对于理解程序的内部工作原理以及优化代码性能至关重要。本文将深…