日期时间 API

日期时间 API (java.time 包),旨在解决旧版 java.util.Datejava.util.Calendar 存在的一些设计缺陷,比如线程不安全、时区处理不一致等问题。新 API 基于 ISO 8601 标准,更加直观、简洁,且支持时区和区域设置。主要类有:LocalDateLocalTimeLocalDateTimeZonedDateTimeInstantDurationPeriod 等。

1. LocalDate:表示日期(无时区)

LocalDate 用于表示没有时间部分和时区的日期(如:年-月-日)。

创建 LocalDate 实例
import java.time.LocalDate;public class LocalDateExample {public static void main(String[] args) {// 当前日期LocalDate today = LocalDate.now();System.out.println("今天的日期: " + today);// 指定日期LocalDate specificDate = LocalDate.of(2025, 5, 15);System.out.println("指定日期: " + specificDate);// 从字符串创建LocalDate fromString = LocalDate.parse("2025-05-15");System.out.println("从字符串创建: " + fromString);}
}
常用方法
  • now():获取当前日期。
  • of(year, month, day):创建指定日期。
  • plusDays(long days):增加天数。
  • minusMonths(long months):减少月份。
  • getDayOfWeek():获取星期几。

2. LocalTime:表示时间(无日期、无时区)

LocalTime 表示一天中的时间(小时、分钟、秒),不涉及日期和时区。

创建 LocalTime 实例
import java.time.LocalTime;public class LocalTimeExample {public static void main(String[] args) {// 当前时间LocalTime now = LocalTime.now();System.out.println("当前时间: " + now);// 指定时间LocalTime specificTime = LocalTime.of(14, 30);System.out.println("指定时间: " + specificTime);// 从字符串创建LocalTime fromString = LocalTime.parse("14:30:15");System.out.println("从字符串创建: " + fromString);}
}
常用方法
  • now():获取当前时间。
  • of(hour, minute):创建指定时间。
  • plusMinutes(long minutes):增加分钟。
  • minusSeconds(long seconds):减少秒数。
  • getHour():获取小时。

3. LocalDateTime:表示日期和时间(无时区)

LocalDateTime 结合了 LocalDateLocalTime,表示日期和时间,依然不涉及时区。

创建 LocalDateTime 实例
import java.time.LocalDateTime;public class LocalDateTimeExample {public static void main(String[] args) {// 当前日期和时间LocalDateTime now = LocalDateTime.now();System.out.println("当前日期和时间: " + now);// 指定日期和时间LocalDateTime specificDateTime = LocalDateTime.of(2025, 5, 15, 14, 30);System.out.println("指定日期和时间: " + specificDateTime);// 从字符串创建LocalDateTime fromString = LocalDateTime.parse("2025-05-15T14:30:00");System.out.println("从字符串创建: " + fromString);}
}
常用方法
  • now():获取当前日期和时间。
  • of(year, month, day, hour, minute):创建指定日期和时间。
  • plusHours(long hours):增加小时数。
  • minusMinutes(long minutes):减少分钟数。
  • getYear():获取年份。

4. ZonedDateTime:表示带时区的日期和时间

ZonedDateTime 表示带有时区的日期时间,它可以精确到不同的时区,适用于跨时区的场景。

创建 ZonedDateTime 实例
import java.time.ZonedDateTime;
import java.time.ZoneId;public class ZonedDateTimeExample {public static void main(String[] args) {// 当前时区的当前时间ZonedDateTime now = ZonedDateTime.now();System.out.println("当前时区时间: " + now);// 指定时区的当前时间ZonedDateTime timeInLondon = ZonedDateTime.now(ZoneId.of("Europe/London"));System.out.println("伦敦的当前时间: " + timeInLondon);// 创建指定时间和时区ZonedDateTime specificDateTime = ZonedDateTime.of(2025, 5, 15, 14, 30, 0, 0, ZoneId.of("Asia/Shanghai"));System.out.println("指定时间和时区: " + specificDateTime);}
}
常用方法
  • now():获取当前时间和时区。
  • of(year, month, day, hour, minute, second, nanoOfSecond, zone):创建指定时区的日期和时间。
  • plusHours(long hours):增加小时数。
  • withZoneSameInstant(ZoneId zone):调整为指定时区的时间。
  • getZone():获取时区信息。

5. Instant:表示时间戳(自1970年1月1日起的秒数)

Instant 表示时间点,通常用于时间戳。它是自 UNIX 纪元(1970年1月1日)以来的秒数。适用于精确时间和存储时间。

创建 Instant 实例
import java.time.Instant;public class InstantExample {public static void main(String[] args) {// 当前时间戳Instant now = Instant.now();System.out.println("当前时间戳: " + now);// 从秒数创建Instant specificInstant = Instant.ofEpochSecond(1672531199);System.out.println("指定时间戳: " + specificInstant);}
}
常用方法
  • now():获取当前的时间戳。
  • ofEpochSecond(long epochSecond):通过给定的秒数创建 Instant
  • plusSeconds(long seconds):增加秒数。
  • minusMillis(long millis):减少毫秒数。
  • toEpochMilli():返回自 Unix 纪元以来的毫秒数。

6. Duration 和 Period

  • Duration 用于表示时间上的差异,通常用于 纳秒 级别的操作。
  • Period 用于表示日期上的差异,通常用于
Duration 示例
import java.time.Duration;
import java.time.LocalTime;public class DurationExample {public static void main(String[] args) {LocalTime startTime = LocalTime.of(10, 30);LocalTime endTime = LocalTime.of(12, 45);Duration duration = Duration.between(startTime, endTime);System.out.println("持续时间(小时和分钟): " + duration.toHours() + "小时 " + duration.toMinutes() % 60 + "分钟");}
}
Period 示例
import java.time.LocalDate;
import java.time.Period;public class PeriodExample {public static void main(String[] args) {LocalDate startDate = LocalDate.of(2020, 1, 1);LocalDate endDate = LocalDate.of(2025, 5, 15);Period period = Period.between(startDate, endDate);System.out.println("日期差异: " + period.getYears() + "年 " + period.getMonths() + "月 " + period.getDays() + "天");}
}
常用方法
  • Duration.between(start, end):计算两个时间点的持续时间。
  • Period.between(start, end):计算两个日期之间的差异。

总结

  • LocalDate:用于处理没有时间部分的日期。
  • LocalTime:用于处理没有日期部分的时间。
  • LocalDateTime:用于处理日期和时间,但不带时区。
  • ZonedDateTime:用于处理日期和时间,并带有时区。
  • Instant:表示时间戳,精确到秒和纳秒。
  • Duration 和 Period:分别表示时间和日期的差异。

这些类使得日期和时间的处理更加直观、安全,并且支持更复杂的日期时间计算。

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

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

相关文章

html中的元素(2)

在用块级元素完成网页的组织和布局以后&#xff0c;要为其中的每一个小区块添加内容&#xff0c;就需要用到行内元素&#xff1a; 1.字体样式元素 <!DOCTYPE html> <html> <head><meta charset"utf-8"><title>HTML5 保留的文本格式元…

Pytorch中的主要函数

目录 一、torch.manual_seed(seed)二、torch.cuda.manual_seed(seed)三、torch.rand(*size, outNone, dtypeNone, layouttorch.strided, deviceNone, requires_gradFalse)四、给大家写一个常用的自动选择电脑cuda 或者cpu 的小技巧五、torch.version.cuda&#xff1b;torch.bac…

php特性

文章目录 函数特性匹配数组报错进制转换绕过正则表达式匹配换行绝对路径绕过 弱类型语言隐式转换核心概念转换规则 运算符优先级 函数特性 匹配数组报错 以此为例&#xff0c;如果传入参数是一个数组&#xff0c;则preg_match()函数报错返回0&#xff0c;完成绕过&#xff0c;…

HVAC 设计:使用 Ansys Discovery 探索更好的设计

通过 Ansys Discovery 及其 2025 年新功能利用 CFD&#xff0c;通过 Computational Insights 应对 HVAC 行业的挑战。 挑战 HVAC 行业在设计高效可靠的管道系统方面面临多项挑战&#xff1a; 压力损失&#xff1a;设计不当的管道会增加能耗并降低热性能。复杂的几何形状&…

Android实现漂亮的波纹动画

Android实现漂亮的波纹动画 本文章讲述如何使用二维画布canvas和camera、矩阵实现二、三维波纹动画效果&#xff08;波纹大小变化、画笔透明度变化、画笔粗细变化&#xff09; 一、UI界面 界面主要分为三部分 第一部分&#xff1a;输入框&#xff0c;根据输入x轴、Y轴、Z轴倾…

基于 Buck-Boost 变换器的磷酸铁锂电池串联电压均衡模糊控制优化策略

针对磷酸铁锂电池串联应用中&#xff0c;由于单体电池之间存在不一致&#xff0c;从而导致蓄电池组利 用率和使用寿命降低的问题&#xff0c;本文提出一种基于非能耗型电压均衡方式的复合式电路拓扑。该均 衡电路在传统单体电池均衡电路的基础上&#xff0c;加入电池组间均衡电…

Spring报错解决一览

Spring错误持续更新贴… 问题一 springcloud-OAuth2.0配置的时候报错 Method springSecurityFilterChain in org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration required a bean of type ‘org.springframework.boot.autoconfigu…

免费使用 DeepSeek API 教程及资源汇总

免费使用 DeepSeek API 教程及资源汇总 一、DeepSeek API 资源汇总1.1 火山引擎1.2 百度千帆1.3 阿里百炼1.4 腾讯云 二、其他平台2.1 华为云2.2 硅基流动 三、总结 DeepSeek-R1 作为 2025 年初发布的推理大模型&#xff0c;凭借其卓越的逻辑推理能力和成本优势&#xff0c;迅速…

蓝桥杯备考:DFS剪枝之数的划分

这道题和组合型枚举差不多&#xff0c;比如我们从第一个数开始填&#xff0c;到第二个数的时候&#xff0c;21明显是重复了&#xff0c;我们就没必要继续往下递归了&#xff0c;这个叫剪掉等效冗余分支&#xff0c;然后还有就是&#xff0c;比如我们2开始的枝头&#xff0c;222…

蓝桥杯 路径之谜

路径之谜 题目描述 小明冒充 XX 星球的骑士&#xff0c;进入了一个奇怪的城堡。 城堡里边什么都没有&#xff0c;只有方形石头铺成的地面。 假设城堡地面是 nnnn 个方格。如下图所示。 按习俗&#xff0c;骑士要从西北角走到东南角。可以横向或纵向移动&#xff0c;但不能斜着走…

Blender调整最佳渲染清晰度

1.渲染采样调高 512 2.根据需要 开启AO ,开启辉光 , 开启 屏幕空间反射 3.调高分辨率 4096x4096 100% 分辨率是清晰度的关键 , 分辨率不高 , 你其他参数调再高都没用 4.世界环境开启体积散射 , 可以增强氛围感 5.三点打光法 放在模型和相机45夹角上 白模 白模带线条 成品

Django基础环境准备

Django基础环境准备 文章目录 Django基础环境准备1.准备的环境 win11系统&#xff08;运用虚拟环境搭建&#xff09;1.1详见我的资源win11环境搭建 2.准备python环境2.1 winr 打开命令提示符 输入cmd 进入控制台2.2 输入python --version 查看是否有python环境2.3在pyhton官网下…

介绍一款飞算JavaAI编程工具,集成到idea,图文并茂

飞算的插件下载地址&#xff0c;里边也有安装步骤&#xff1a; JavaAI 下载 从file-》setting-》plugin&#xff0c;然后走图中所示 选择从磁盘安装插件&#xff1a;找到下载好的压缩包然后进行idea重启 根据提示模块可以生成代码&#xff0c;就是需要等待&#xff0c;后期不…

python-leetcode-斐波那契数

509. 斐波那契数 - 力扣&#xff08;LeetCode&#xff09; class Solution:def fib(self, n: int) -> int:if n 0:return 0dp [0] * (n 1)dp[1] 1for i in range(2, n 1):dp[i] dp[i - 1] dp[i - 2]return dp[n]

类和对象——const修饰的类的对象和函数

const修饰的类的对象和函数 const成员函数和const对象1 const成员函数2 调用关系3 const在成员函数中的位置4 取地址&及const取地址操作符重载 const成员函数和const对象 1 const成员函数 将const修饰的“成员函数”称之为const成员函数&#xff0c;const修饰类成员函数&…

unity学习61:UI布局layout

目录 1 布局 layout 1.1 先准备测试UI,新增这样一组 panel 和 image 1.2 新增 vertical layout 1.3 现在移动任意一个image 都会影响其他 1.3.1 对比 如果没有这个&#xff0c;就会是覆盖效果了 1.3.2 对比 如果没有这个&#xff0c;就会是覆盖效果了 1.4 总结&#xf…

第48天:Web开发-JavaEE应用依赖项Log4j日志Shiro验证FastJson数据XStream格式

#知识点 1、安全开发-JavaEE-第三方依赖开发安全 2、安全开发-JavaEE-数据转换&FastJson&XStream 3、安全开发-JavaEE-Shiro身份验证&Log4j日志处理 一、Log4j 一个基于Java的日志记录工具&#xff0c;当前被广泛应用于业务系统开发&#xff0c;开发者可以利用该工…

使用tkinter有UI方式来拷贝Excel文件

有需求使用tkinter 有用户交互界面来拷贝Excel文件&#xff0c;最后进行打包完成 代码如下&#xff0c;实现思路是先使用tkinter库选择Excel路径&#xff0c;然后保存到txt文档&#xff0c; import time import tkinter from pathlib import Path from typing import Optiona…

【六祎 - Note】Redis缓存设计模型,备忘录;

Redis缓存备忘录 from to : 点击访问源地址

天佐.乾坤袋 基于抽屉式文件存储的NoSql数据库

天佐.乾坤袋 天佐.乾坤袋 简介 天佐.乾坤袋 基于抽屉式文件存储的NoSql数据库&#xff0c;可用于文件打包&#xff0c;数据整合&#xff0c;加密存放等多种用途。可以方便快捷的搭建和部署存储应用的系统。 传说: 弥勒所有&#xff0c;专做储物之用。拥有不可思议之力&#x…