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…

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

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

BDD - Python Behave Retry 机制

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

开源数据可视化分析工具DataEase本地部署并实现远程访问

目录 前言 1. 安装DataEase 2. 本地访问测试 3. 安装 cpolar内网穿透软件 4. 配置DataEase公网访问地址 5. 公网远程访问Data Ease 6. 固定Data Ease公网地址 结语 作者简介: 懒大王敲代码,计算机专业应届生 今天给大家聊聊开源数据可视化分析工…

element的form表单校验(身份证号、手机号、整数、汉字、for循环列表)

<template><div class"FormPage"><el-form ref"form" :model"form" :rules"rules" label-width"100px"><el-form-item label"姓名:" prop"name"><el-input v-model"fo…

25道RabbitMQ面试题含答案(很全)

1. 什么是RabbitMQ RabbitMQ是一个开源的消息队列系统&#xff0c;它使用AMQP&#xff08;高级消息队列协议&#xff09;标准。RabbitMQ的主要目标是提供可靠的消息传递&#xff0c;确保消息的可靠性和顺序性&#xff0c;同时提供灵活的路由和消息确认机制。 RabbitMQ基于AMQ…

Unity坦克大战开发全流程——游戏场景——游戏界面——设置界面复用

游戏场景——游戏界面——设置界面复用 先将开始场景当中的设置面板复制过来 由于设置面板挂载的脚本都是相同的&#xff0c;在BeginScene中关闭设置面板时不会报空&#xff0c;而在GameScene中关闭设置面板时却会报空&#xff0c;这是因为监听事件中的单例模式调用的实例是Beg…

基于机器视觉的害虫种类及计数检测研究-人工智能项目-附代码

概述 农业与民生和经济发展息息相关&#xff0c;对农业发展科学化的关注既是民生需求&#xff0c; 也是经济稳步发展的迫切需求。病虫害是影响农作物生长的重要因素&#xff0c;对农作物的产量和品质都能造成无法估计的损害。 - 针对目前广大农业产区农业植保人员稀缺、病虫害…

爬虫基础一(持续更新)

爬虫概念&#xff1a; 通过编写程序&#xff0c;模拟浏览器上网&#xff0c;然后让其去互联网上抓取数据的过程 分类&#xff1a; 1&#xff0c;通用爬虫&#xff1a;抓取一整张页面数据 2&#xff0c;聚焦爬虫&#xff1a;抓取页面中的局部内容 3&#xff0c;增量式爬虫&…

【UnityShader入门精要学习笔记】(2)GPU流水线

本系列为作者学习UnityShader入门精要而作的笔记&#xff0c;内容将包括&#xff1a; 书本中句子照抄 个人批注项目源码一堆新手会犯的错误潜在的太监断更&#xff0c;有始无终 总之适用于同样开始学习Shader的同学们进行有取舍的参考。 文章目录 上节复习GPU流水线顶点着色…