Java日期和时间(二)

新增的日期和时间

为什么要学习新增的日期和时间

1、代替Calendar

        LocalDate:年、月、日

        LocalTime:时、分、秒

        LocalDateTime:年、月、日、时、分、秒

        ZoneId:时区

        ZoneldDatetime:带时区的时间

2、代替Date 

        Instant:时间戳/时间线

 3、代替SimpleDateForamt

        DateTimeFormatter:用于时间的格式化和解析

4、其他补充 

        Period:时间间隔(年、月、日)

        Duration:时间间隔(时、分、秒,纳秒)

LocalDate、LocalTime、LocalDateTime

LocalDate:代表本地日期(年、月、日、星期)

LocalTime:代表本地时间(时、分、秒、纳秒)

LocalDateTime:代表本地日期、时间(年、月、日、星期、时、分、秒、纳秒)

它们获取对象的方案

方法名示例
public static Xxxx now():获取系统当前时间对应的该对象

LocalDate ld = LocaDate.now();

LocalTime ld = LocalTime.now();

LocalDateTime ld = LocalDateTime.now();

public static Xxxx of(…):获取指定时间的对象

LocalDate localDate1 = LocalDate.of(2099,11,11)

LocalTime localTime1 = LocalTime.of(9,8,59)

LocalDateTime localDateTime1 = LocalDateTime.of(2025,11,16,14,30,01)

LocalDate 

LocalDate的常用API(都是处理年、月、日、星期相关的)
import java.time.LocalDate;public class Test {public static void main(String[] args){// 获取本地日期对象(不可变对象)LocalDate ld = LocalDate.now(); // 年 月 日System.out.println(ld);// 获取日期对象中的信息int year = ld.getYear(); // 年int month = ld.getMonthValue(); // 月(1-12)int day = ld.getDayOfMonth(); // 日int dayOfYear = ld.getDayOfYear(); // 一年中的第几天int dayOfWeek = ld.getDayOfWeek().getValue(); // 星期几// 直接修改某个信息:withYear、withMonth、withDayOfMonth、withDayOfYearLocalDate ld2 = ld.withYear(2099);LocalDate ld3 = ld.withMonth(12);System.out.println(ld2);System.out.println(ld3);System.out.println(ld);// 把某个信息加多少:plusYears、plusMonths、plusDays、plusWeeksLocalDate ld4 = ld.plusYears(2);LocalDate ld5 = ld.plusMonths(2);// 把某个信息减多少:minusYears、minusMonths、minusDays、minusWeeksLocalDate ld6 = ld.minusYears(2);LocalDate ld7 = ld.minusMonths(2);// 获取指定日期的LocalDate对象LocalDate ld8 = LocalDate.of(2099,12,12);LocalDate ld9 = LocalDate.of(2099,12,12);// 判断2个日期对象是否相等,再前还是再后:equals isBefore isAfterSystem.out.println(ld8.equals(ld9));System.out.println(ld8.isAfter(ld));System.out.println(ld8.isBefore(ld));}
}

LocalTime

LocalTime的常用API(都是处理时、分、秒、纳秒相关的)
import java.time.LocalTime;public class Test {public static void main(String[] args){// 获取本地时间对象LocalTime lt = LocalTime.now(); // 时 分 秒System.out.println(lt);// 获取时间中的信息int hour = lt.getHour(); // 时int minute = lt.getMinute(); // 分int second = lt.getSecond(); // 秒int nano = lt.getNano(); // 纳秒// 修改时间LocalTime lt2 = lt.withHour(10);LocalTime lt3 = lt.withMinute(10);LocalTime lt4 = lt.withSecond(10);LocalTime lt5 = lt.withNano(10);// 加多少:plusHours、plusMinutes、plusSeconds、plusNanosLocalTime lt6 = lt.plusHours(10);LocalTime lt7 = lt.plusMinutes(10);// 减多少:minusHours、minusMinutes、minusSeconds、minusNanosLocalTime lt8 = lt.minusHours(10);LocalTime lt9 = lt.minusMinutes(10);// 获取指定时间的LocalTime对象LocalTime lt10 = LocalTime.of(12,12,12);LocalTime lt11 = LocalTime.of(12,12,12);// 判断2个日期对象是否相等,再前还是再后:equals isBefore isAfterSystem.out.println(lt10.equals(lt11));System.out.println(lt10.isAfter(lt));System.out.println(lt10.isBefore(lt));}
}

LocalDateTime

LocalTime的常用API(都是处理年、月、日、时、分、秒、纳秒相关的)
import java.time.LocalDateTime;public class Test {public static void main(String[] args){// 获取本地日期、时间对象LocalDateTime ldt = LocalDateTime.now(); // 年 月 日 时 分 秒System.out.println(ldt);// 获取日期、时间中的信息int year = ldt.getYear(); // 年int month = ldt.getMonthValue(); // 月(1-12)int day = ldt.getDayOfMonth(); // 日int dayOfYear = ldt.getDayOfYear(); // 一年中的第几天int dayOfWeek = ldt.getDayOfWeek().getValue(); // 星期几int hour = ldt.getHour(); // 时int minute = ldt.getMinute(); // 分int second = ldt.getSecond(); // 秒int nano = ldt.getNano(); // 纳秒// 修改时间LocalDateTime ldt2 = ldt.withYear(2099);LocalDateTime ldt3 = ldt.withMinute(59);// 加多少LocalDateTime ldt4 = ldt.plusYears(2);LocalDateTime ldt5 = ldt.plusMinutes(3);// 减多少LocalDateTime ldt6 = ldt.minusYears(2);LocalDateTime ldt7 = ldt.minusMinutes(3);// 获取指定日期、时间的LocalDateTime对象LocalDateTime ldt8 = LocalDateTime.of(2099,12,12,12,12,12);LocalDateTime ldt9 = LocalDateTime.of(2099,12,12,12,12,12);// 判断2个日期、时间对象是否相等,再前还是再后:equals isBefore isAfterSystem.out.println(ldt8.equals(ldt9));System.out.println(ldt8.isAfter(ldt));System.out.println(ldt8.isBefore(ldt));}
}

Zoneld、ZonedDateTime

Zoneld:代表时区id

Zoneld时区的常见方法

ZonedDateTime 

ZonedDateTime带时区时间的常见方法

import java.time.Clock;
import java.time.ZoneId;
import java.time.ZonedDateTime;public class Test {public static void main(String[] args){// Zoneld的常见方法// 获取系统默认的时区ZoneId zoneId = ZoneId.systemDefault();System.out.println(zoneId.getId());System.out.println(zoneId);// 获取Java支持的全部时区idSystem.out.println(ZoneId.getAvailableZoneIds());// 把某个时区id封装成Zoneid对象ZoneId zoneId1 = ZoneId.of("America/New_York");// ZonedDateTime:带时区的时间// 获取系统某个时区的ZondDateTime对象ZonedDateTime now = ZonedDateTime.now(zoneId1);System.out.println(now);// 世界标准时间ZonedDateTime now1 = ZonedDateTime.now(Clock.systemUTC());System.out.println(now1);// 获取系统默认时区的ZondDateTime对象ZonedDateTime now2 = ZonedDateTime.now();System.out.println(now2);}
}

 

Instant  时间线上的某个时刻/时间戳

  • 通过获取Instant的对象可以拿到此刻的时间,该时间由两部分组成:从1970-01-01  00:00:00开始走到此刻的总秒数 + 不够一秒的纳秒数
import java.time.Instant;public class Test {public static void main(String[] args){// 创建Instant对象,获取此刻时间信息Instant now = Instant.now();// 获取总秒数long second = now.getEpochSecond();System.out.println(second);// 不够一秒的纳秒数int nano = now.getNano();System.out.println(nano);// 增加、减少时间Instant instant1 = now.plusNanos(111);Instant instant2 = now.minusMillis(2);System.out.println(now);// Instant对象的作用:做代码的性能分析,或者记录用户的操作时间点Instant now1 = Instant.now();// 代码行……Instant now2 = Instant.now();}
}
  • 作用:可以用来记录代码的执行时间,或者记录用户的操作某个时间时间点。
  • 传统的Date类,只能精确到毫秒,并且是可变对象
  • 新增的Instant类,可以精确到纳秒,并且是不可变对象,推荐用Instant代替Date。

DateTimeFormatter

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;public class Test {public static void main(String[] args) {// 创建一个日期时间格式化器对象DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");// 对时间进行格式化LocalDateTime now = LocalDateTime.now();System.out.println(now);String rs = formatter.format(now);System.out.println(rs);// 格式化时间的另一种方案String rs2 = now.format(formatter);System.out.println(rs2);// 解析时间String dateStr = "2029年12月12日 12:12:12";LocalDateTime ldt = LocalDateTime.parse(dateStr,formatter);System.out.println(ldt);}
}

 

Period、Duration

Period(一段时期)

  • 可以用于计算两个LocalDate对象相差的年数、月数、天数。
import java.time.LocalDate;
import java.time.Period;public class Test {public static void main(String[] args) {LocalDate start = LocalDate.of(2029,8,10);LocalDate end = LocalDate.of(2029,12,15);// 创建Period对象,封装两个日期对象Period period = Period.between(start,end);// 通过Period对象获取两个日期对象相差的信息System.out.println(period.getYears());System.out.println(period.getMonths());System.out.println(period.getDays());}
}

 

Duration(持续时间)

  • 可以用于计算两个时间对象相差的天数、小数数、分数、秒数、纳秒数;支持LocalTime、LocalDateTime、Instant等时间。
import java.time.Duration;
import java.time.LocalDateTime;public class Test {public static void main(String[] args) {LocalDateTime start = LocalDateTime.of(2029,11,11,11,10,10);LocalDateTime end = LocalDateTime.of(2029,11,11,11,11,11);// 创建Duration对象,封装两个时间对象Duration duration = Duration.between(start,end);// 通过Duration对象获取两个时间对象相差的信息System.out.println(duration.toDays());System.out.println(duration.toHours());System.out.println(duration.toMinutes());System.out.println(duration.toMillis());System.out.println(duration.toNanos());}
}

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

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

相关文章

解决npm,pnpm,yarn等安装electron超时等问题

我在安装electron的时候,出现了超时等等各种问题: (RequestError: connect ETIMEDOUT 20.205.243.166:443) npm yarn:Request Error: connect ETIMEDOUT 20.205.243.166:443 RequestError: socket hang up npm ER…

【排序】堆排序(C语言实现)

文章目录 前言1. 堆排序1.1 堆排序的思想1.2 堆排序的实现 2. 为什么向下调整而不是向上调整 前言 本章主要会讲堆排序的实现过程以及向上调整和向下调整的时间复杂度,在学习本章前,需要对堆、以及向上调整和向下调整有一个了解,如果不了解的…

vite+Vue3学习笔记(3)——界面设计

1 Element-plus 这是一个基于Vue3的组件库,能够快速构建界面样式。 官网链接: https://element-plus.gitee.io/zh-CN/guide/design.html 1.1 基础组件 1.1.1 安装 项目中的终端输入: npm install --save element-plus 1.1.2 引用 1.1.2.1…

VCG 角度弧度互转

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 VCG为我们提供了角度域弧度互相转换的函数vcg::math::ToRad与vcg::math::ToDeg,虽然两者的转换很简单,不过既然VCG已经我们提供了相关函数,这里还是用起来,下面是一个简单的演示代码。 二、实现代码 //VCG #in…

图论及其应用(匈牙利算法)---期末胡乱复习版

目录 题目知识点解题步骤小结题目 T1:从下图中给定的 M = {x1y4,x2y2,x3y1,x4y5},用 Hungariam算法【匈牙利算法】 求出图中的完美匹配,并写出步骤。 知识点 关于匈牙利算法: 需要注意的是,匈牙利算法仅适用于二分图,并且能够找到完美匹配。什么是交替路?从一个未匹…

vite 打包二级目录记录

1、react 配置 首先放一个简单粗暴的方法 使用 HashRouter&#xff0c; 缺点就是路由会带 # <HashRouter><App /> </HashRouter>使用 BrowserRouter 时需要进行下面配置 1、package 配置 {...other,"homepage": "/web" }2、vite.con…

BDD - Python Behave Retry 机制

BDD - Python Behave Retry 机制 引言Behave RetryBehave Retry 应用feature 文件创建 step 文件Retry运行 Behave 并生成 rerun 文件重新运行失败的场景 引言 在日常运行测试用例&#xff0c;有时因为环境不稳定造成一些测试用例跑失败了&#xff0c;如果能将这些失败的测试用…

计算字符串的长度几种方法 | 递归 | 指针减指针 | 计数器 | C语言 | 详解 | 期末考试必看!!!

一&#xff0c;使用 递归 计算 字符串 的 长度 1&#xff0c;题目描述 2&#xff0c;分析题目 Ⅰ&#xff0c;题目中要求除了函数的形参&#xff0c;函数中不能够使用多余的变量&#xff08;这是比较苛刻的要求&#xff09;。 Ⅱ&#xff0c;根据此&#xff0c;很自然的…

k3s-安装、卸载、证书过期x509

k3s-安装、卸载、证书过期 K3S 是轻量级的 Kubernetes。易于安装&#xff0c;仅需要 Kubernetes 内存的一半&#xff0c;所有组件都在一个小于 100 MB 的二进制文件中。 环境准备 # 配置yum源 yum install -y yum-utils yum-config-manager --add-repo http://mirrors.aliyu…

【PostgreSQL】表操作-修改表

【PostgreSQL】表操作快速链接 创建表及基础表命令 修改表 表权限 添加列 ALTER TABLE products ADD COLUMN description text;新列最初填充给定的任何默认值DEFAULT&#xff08;如果未指定子句&#xff0c;则为 null&#xff09;。 注意&#xff1a; 从 PostgreSQL 11 开始…

12.1 【Screen配置】概括

写在前面 在使用Screen服务前,我们需要对Screen进行配置或了解Screen配置信息,对我们的开发调试很重要。 一,配置文件介绍 graphics.conf 文件位于以下目录中: 源码目录:$QNX_TARGET/processor/usr/lib/graphics/platform 终端目录:/usr/lib/graphics/platform 其中处…

leetcode 76. 最小覆盖子串

题目链接&#xff1a;leetcode 76 1.题目 给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串&#xff0c;则返回空字符串 “” 。 注意&#xff1a; 对于 t 中重复字符&#xff0c;我们寻找的子字符串中该字符数…

JavaScript 常用事件演示

Hi i,m JinXiang ⭐ 前言 ⭐ 本篇文章主要介绍在在JavaScript 常用事件演示以及部分理论知识 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f4dd;私信必回哟&#x1f601; &#x1f349;博主收将持续更新学习记录获&#xff0c;友友们有任何问题可以在评论区…

回归预测 | MATLAB实OOA-LSTM基于鱼鹰优化算法优化长短期记忆网络的多输入单输出数据回归预测模型 (多指标,多图)

回归预测 | MATLAB实OOA-LSTM基于鱼鹰优化算法优化长短期记忆网络的多输入单输出数据回归预测模型 &#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | MATLAB实OOA-LSTM基于鱼鹰优化算法优化长短期记忆网络的多输入单输出数据回归预测模型 &#xff08;多指标&a…

20231228在Firefly的AIO-3399J开发板的Android11的挖掘机的DTS配置单前置摄像头ov13850

20231228在Firefly的AIO-3399J开发板的Android11的挖掘机的DTS配置单前置摄像头ov13850 2023/12/28 10:42 【碰到一个很神奇的问题】&#xff1a; 昨天晚上前置摄像头怎么也点不亮&#xff01;改了巨多的地方&#xff01;晚上睡觉之前把开发板彻底断电了&#xff01;今天开电脑…

CISSP 第2章: 人员安全和风险管理概念

第二章 人员安全和风险管理概念 2.1 促进人员安全策略 构建工作描述方面的重要因素包括: 职责分离: 把关键的、重要的和敏感工作任务分配给若干不同的管理员或高级执行者&#xff0c;防止共谋 工作职责:最小特权原则 岗位轮换:提供知识冗余&#xff0c;减少伪造、数据更改、偷…

STM32的在线升级(IAP)实现方法:BOOT+APP原理详解

0 工具准备 Keil uVision5 Cortex M3权威指南&#xff08;中文&#xff09; STM32参考手册 1 在线升级&#xff08;IAP&#xff09;设计思路 为了实现STM32的在线升级&#xff08;IAP&#xff09;功能&#xff0c;通常会将STM32的FLASH划分为BOOT和APP两个部分&#xff0c;BOO…

虚幻UE 光源-色温和光度学

文章目录 一、色温二、光度学1、lux勒克斯2、cd坎德拉3、nit尼特4、总结 三、EV曝光值 一、色温 色温可以简单的认为就是颜色的温度。 但他是有范围的&#xff0c;也是有要求的&#xff0c;并不是所有的颜色都可以有色温。 以上就是色温范围图。 而这些颜色的温度是怎么定义…

【算法每日一练]-数论 (保姆级教程 篇2 )#行列式 #甜甜花研究 #约数个数 #模数 #数树 #盒子与球

目录 今日知识点&#xff1a; 辗转相减法化下三角求行列式 组合数动态规划打表 约数个数等于质因数的次方1的乘积 求一个模数 将n个不同的球放入r个不同的盒子&#xff1a;f[i][j]f[i-1][j-1]f[i-1][j]*j 行列式 甜甜花的研究 约数个数 模数 数树 盒子与球 行列…

github短视频去除水印项目Douyin_TikTok_Download_API介绍

当下正值短视频盛行的时代。在我们浏览短视频的同时&#xff0c;经常能发现一些精美的图片、引人入胜的文案以及吸引眼球的视频&#xff0c;想要将它们保存到本地。然而&#xff0c;保存下来的图片或视频通常伴随着不太愉悦的水印&#xff0c;这显著降低了使用体验。因此&#…