Java日期类

日期类

第一代日期类:

1、Date:精确到毫秒,代表特定的瞬间
在这里插入图片描述

2、SimpleDateFormat: **格式化和解析日期的具体类,**它允许进行:格式化(日期 → 文本) 解析(文本 → 日期) 和 规范化。
在这里插入图片描述

3、常用的使用方法
在这里插入图片描述

import java.text.SimpleDateFormat;
import java.util.Date;public class Date01 {public static void main(String[] args) throws Exception {// 选取当前系统时间// 默认输出的日期格式为国外的方式,因此进行日期转换。Date date = new Date();System.out.println("当前的日期格式为:" + date);// 通过制定毫秒数,来得到毫秒对应的时间Date date1 = new Date(12341341341L);System.out.println("毫秒对应的日期为:" + date1);// 通过SimpleDateFormat对象,来指定相应的格式。// 对象中的格式是固定好的。按照对应的格式来进行声明SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss E");String format = sdf.format(date);System.out.println("当前日期:" + format);// 可以把一个格式化的String, 转换为对应的Date。// 1、注意String中的时间格式和SimpleDateFormat中的格式要一致,否则抛出转换异常// 2、默认转换后的时间格式为国外的形式,如果转为国内的话,使用SimpleDateFormat.format方法String s = "2023年02月25日 16:17:52 周六";Date parseDate = sdf.parse(s);System.out.println("String to Date: " + parseDate);System.out.println("String to format Date: " + sdf.format(parseDate));}
}

第二代日期类

1、Calendar类(日历)

public abstract class Calendar implements Serializable, Cloneable, Comparable

2、Calendar类是一个抽象类,它为特定瞬间与一组诸如YEAR、MONTH、DAY_OF_MONTH、HOUR等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。

3、Calendar是一个抽象类,并且构造器为 private, 可以通过getInstance()来创建实例

import java.util.Calendar;public class Calendar01 {public static void main(String[] args) {//老韩解读//1. Calendar是一个抽象类, 并且构造器是private//2. 可以通过 getInstance() 来获取实例//3. 提供大量的方法和字段提供给程序员//4. Calendar没有提供对应的格式化的类,因此需要程序员自己组合来输出(灵活)//5. 如果我们需要按照 24小时进制来获取时间, Calendar.HOUR ==改成=> Calendar.HOUR_OF_DAYCalendar c = Calendar.getInstance(); //创建日历类对象//比较简单,自由System.out.println("c=" + c);//2.获取日历对象的某个日历字段System.out.println("年:" + c.get(Calendar.YEAR));// 这里为什么要 + 1, 因为Calendar 返回月时候,是按照 0 开始编号System.out.println("月:" + (c.get(Calendar.MONTH) + 1));System.out.println("日:" + c.get(Calendar.DAY_OF_MONTH));System.out.println("小时:" + c.get(Calendar.HOUR));System.out.println("分钟:" + c.get(Calendar.MINUTE));System.out.println("秒:" + c.get(Calendar.SECOND));//Calender 没有专门的格式化方法,所以需要程序员自己来组合显示System.out.println(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + c.get(Calendar.DAY_OF_MONTH) +" " + c.get(Calendar.HOUR_OF_DAY) + ":" + c.get(Calendar.MINUTE) + ":" + c.get(Calendar.SECOND) );}
}

在这里插入图片描述

第三代日期类

之前两代的不足

1、可变性:像日期和时间这样的类应该是不可变的

2、偏移性:Date中的年份是从1900开始的,而月份都从0开始

3、格式化:格式化只对Date有用,而Calendar不能使用

4、前面两代不是线程安全的,不能处理闰秒等(每隔两天,多出1s)。

LocalDate、LocalTime、LocalDateTime

  • LocalDate: 只包含日期,可以获取年月日字段

  • LocalTime: 只包含时间,可以获取时分秒字段

  • LocalDateTime: 包含日期 + 时间,可以同时包含 年月日 时分秒 字段

// 返回当前日期时间的对象
LocalDateTime ldt = LocalDateTime.now(); // LocalDate.now();  LocalTime.now();
System.out.println(ldt);// 返回年月日时分秒
System.out.println("年:" + ldt.getYear());
System.out.println("英文月:" + ldt.getMonth());
System.out.println("数字月:" + ldt.getMonthValue());
System.out.println("日:" + ldt.getDayOfMonth());
System.out.println("时:" + ldt.getHour());
System.out.println("分:" + ldt.getMinute());
System.out.println("秒:" + ldt.getSecond());

DateTimeFormatter:格式日期类

//创建对象:DateTimeFormatter
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH小时mm分钟ss秒");
String format = dtf.format(ldt);
System.out.println("格式化之后的日期为:" + format);

Instant 时间戳

类似于 Date, 提供了一系列的和Date类转换的方式

  • Instant → Date

    Date date = Date.from(instant);

  • Date → Instant

    Instant instant = date.toInstant();

// 创建 Instant 值
Instant now = Instant.now();
// Instant 获取时间戳
System.out.println(now.atZone(ZoneId.systemDefault()));
// Instant  ->  Date
Date date = Date.from(now);// Date 获取时间戳
System.out.println(date.getTime());
// Date -> Instant
Instant instant = date.toInstant();System.out.println(date);
System.out.println(instant);

更多方法

  • 提供 plus 和 minus方法可以对当前时间进行加或者减
LocalDateTime ldt = LocalDateTime.now();
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH小时mm分钟ss秒");//提供 plus 和 minus方法可以对当前时间进行加或者减
//看看890天后,是什么时候 把 年月日-时分秒
LocalDateTime localDateTime = ldt.plusDays(890);
System.out.println("890天后=" + dtf.format(localDateTime));//看看在 3456分钟前是什么时候,把 年月日-时分秒输出
LocalDateTime localDateTime2 = ldt.minusMinutes(3456);
System.out.println("3456分钟前 日期=" + dtf.format(localDateTime2));

在这里插入图片描述

练习题

在这里插入图片描述

public class Exercise01 {public static String reverse(String str, int start, int end) {if (!(str != null && start > 0 && end > start && end < str.length())) {throw new RuntimeException("参数不正确");}char[] strArray = str.toCharArray();for (int i = start, j = end; i < j; i++, j--) {char temp = strArray[i];strArray[i] = strArray[j];strArray[j] = temp;}return new String(strArray);}public static void main(String[] args) {String s = "abcdef";try {System.out.println(reverse(s, 1, 89));} catch (Exception e) {System.out.println(e.getMessage());}}
}

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

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

相关文章

SpringBoot源码分析(6)--SpringBootExceptionReporter/异常报告器

文章目录 一、前言二、异常报告器介绍2.1、作用2.2、接口定义2.3、FailureAnalyzer错误分析器2.4、FailureAnalysisReporter错误报告器 三 、SpringBootExceptionReporter源码分析四、shutdownHook介绍4.1、背景4.2、什么是Shutdown Hook4.3、什么时候会调用Shutdown Hook4.4、…

NUXT3学习笔记2

1、配置Ant design Vue (两个安装方式随便选一种&#xff0c;yarn会安装的更快) npm i ant-design-vue --save yarn add ant-design-vue 2、使⽤的 Vite&#xff0c;你可以使⽤ unplugin-vue-components 来进⾏按需加载。 yarn add unplugin-vue-components --save 在nuxt.…

第一阶段-第十一章 Python基础的综合案例(数据可视化-地图可视化)

目录 一、基础地图使用  1.学习目标  2.视觉映射器  3.本节的演示二、疫情地图-国内疫情地图  1.案例效果  2.函数的语法  3.本节的代码演示三、疫情地图-省级疫情地图  1.案例效果  2.本节的代码演示 说明&#xff1a;该文章是学习 黑马程序员在B站上分享的视…

【c++修行之路】IO流架构及使用

文章目录 前言输入输出库文件读写序列化与反序列化结语 前言 大家好久不见&#xff0c;今天一起来学习c中的IO流。 输入输出库 这两张架构图略显复杂&#xff0c;这里给出一张比较清楚的IO流架构图&#xff1a; 也就是说&#xff0c;我们平时使用的诸如cin、cout、cerr、cl…

python selenium.webdriver 爬取政策文件

文章目录 获取文章链接批量爬取政策文件应用selenium爬取文件信息数据处理导出为excel 获取文章链接 获取中央人民政府网站链接&#xff0c;进入国务院政策文件库&#xff0c;分为国务院文件和部门文件&#xff08;发改委、工信部、交通运输部、市场监督局、商务部等&#xff…

QT实现按钮开关Form窗体的效果

实现效果叙述如下&#xff1a; MainWindow中的按钮实现Form窗体的开关&#xff0c;Form窗体的关闭按钮禁用掉&#xff0c;只允许使用窗体按钮进行&#xff0c;且关闭MainWindow按钮时Form窗体随之关闭。 注意&#xff1a; 要想实现关闭MainWindow按钮时Form窗体随之关闭&#x…

k8s之Pod容器资源限制

目录 一、Pod 容器的资源限制二、CPU 资源单位三、内存资源单位四、为本地临时性存储设置请求和限制五、总结 一、Pod 容器的资源限制 当定义 Pod 时可以选择性地为每个容器设定所需要的资源数量。 最常见的可设定资源是 CPU 和内存大小&#xff0c;以及其他类型的资源。 当为…

arcgis拓扑检查

不能有悬挂点 不能有伪结点***路网处理很重要&#xff0c;看研究吧。 一直默认到最后。 导入要素类&#xff0c;单个 toupu2右键新建拓扑&#xff08;T&#xff09; 一般选不能有悬挂点&#xff0c;不能重叠。 一路默认 是 拉进图层可视化 线要素的话记得添加字段length&#…

Ghost Buster Pro for mac(快速清理卸载的应用残存文件)

Ghost Buster Pro for mac可从您已卸载的应用程序中查找并删除文件。该应用程序速度快如闪电&#xff0c;可立即释放内存。 许多应用程序都安装在计算机上&#xff0c;但它们通常只会在您的计算机上停留很短的时间。每个应用程序都会创建文件&#xff0c;但删除应用程序不会删…

编码器旋转圈数和单圈计数值计算功能块(SMART PLC梯形图)

有关 PLC的编码器更多应用请参看专栏其它文章,常用链接如下: 西门子SMART PLC高速脉冲计数采集编码器速度(RC滤波)_编码器频率采集计算速度采用什么滤波方法_RXXW_Dor的博客-CSDN博客这篇文章主要讲解西门子 SMART PLC高速计数采集编码器脉冲信号计算速度,根据编码器脉冲数…

【vs code插件推荐】快捷生成 console.log

使用这个插件可以直接双击选中你的变量名 然后使用快捷键 ctrl alt l 即可快速生成 时小记&#xff0c;终有成。

虚幻插件Landscaping Landscaping Mapbox

虚幻插件Landscaping & Landscaping Mapbox Landscaping offers an easy way to import GIS data as single Landscape or World Composition (UE4) or World Partition (UE5) or Procedural/Static Mesh. 提供了一种非常简单的方式来导入GIS数据&#xff0c;可以生成Lands…