日期类 - Java

知道怎么查,怎么用即可,不用每个方法都背

日期类

  • 第一代日期类
    • 方法演示
  • 第二代日期类
    • 方法演示
  • 第三代日期类
    • 前面两代日期类的不足分析
    • 第三代日期类常见方法
    • 方法演示

第一代日期类

  1. Date类:精确到毫秒,代表特定的瞬间
  2. SimpleDateFormat类:格式和解析日期的类
    SimpleDateFormat 格式化和解析日期的具体类。它允许进行格式化(日期->文本)、解析(文本->日期)和规范化。

在这里插入图片描述

这里说明一下 IDEA 中绘制类图(diagram)的时候的 properties。fields表示属性,properties表示使用了 setXXX getYYY 方法的名词,那么properties就是XXX YYY(注意这里的XXX YYY不一定是属性)。

方法演示

新建
① 获取当前系统时间
② 这里的Date 类是在java.util包。import java.util.Date;
③ 默认输出的日期格式是国外的方式, 因此通常需要对格式进行转换

Date d1 = new Date(); //获取当前系统时间
System.out.println("当前日期=" + d1);Date d2 = new Date(9234567); //通过指定毫秒数得到时间
System.out.println("d2=" + d2); //获取某个时间对应的毫秒数

在这里插入图片描述

格式化
① 创建 SimpleDateFormat对象,可以指定相应的格式
② 这里的格式使用的字母是规定好,不能乱写

在这里插入图片描述

SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss E");
Stringformat = sdf.format(d1); // format:将日期转换成指定格式的字符串
System.out.println("当前日期=" + format);

在这里插入图片描述

String -> Date
① 可以把一个格式化的String 转成对应的 Date
② 得到Date 仍然在输出时,还是按照国外的形式,如果希望指定格式输出,需要转换
③ 在把String -> Date,使用的 sdf 格式需要和你给的String的格式一样,否则会抛出转换异常

//这里使用 throws 
public static void main(String[] args) throws ParseException {SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss E");String s = "1996年01月01日 10:20:30 星期一";Date parse = sdf.parse(s);System.out.println("parse=" + sdf.format(parse));
}

第二代日期类

  1. 第二代日期类,主要就是 Calendar类(日历)。
  2. Calendar类是一个抽象类,它为特定瞬间与一组诸如YEAR、MONTH、DAY_OF_MONTH、HOUR 等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期) 提供了一些方法。
  3. import java.util.Calendar;

方法演示

① Calendar是一个抽象类, 并且构造器是private
② 可以通过 getInstance() 来获取实例
③ 提供大量的方法和字段提供给程序员
④ Calendar没有提供对应的格式化的类,因此需要程序员自己组合来输出(灵活)
⑤ 如果我们需要按照 24小时进制来获取时间, Calendar.HOUR ==改成=> Calendar.HOUR_OF_DAY

Calendar c = Calendar.getInstance(); //创建日历类对象//比较简单,自由
System.out.println("c=" + c);

获取日历对象的某个日历字段
Calendar 返回月时候,是按照 0 开始编号

System.out.println("年:" + c.get(Calendar.YEAR));
System.out.println("月:" + (c.get(Calendar.MONTH) + 1));

Calender 没有专门的格式化方法,所以需要程序员自己来组合显示

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));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) );

在这里插入图片描述

第三代日期类

前面两代日期类的不足分析

JDK 1.0 中包含了一个 java.util.Date 类,但是它的大多数方法已经在JDK 1.1引入Calendar类之后被弃用了。
而 Calendar 也存在问题是:
① 可变性:像日期和时间这样的类应该是不可变的。
② 偏移性:Date中的年份是从1900开始的,而月份都从0开始。
③ 格式化:格式化只对Date有用,Calendar则不行。
④ 此外,它们也不是线程安全的;不能处理闰秒等(每隔2天,多出15)。

第三代日期类常见方法

LocalDate(日期 /年月日)、LocalTime(时间 /时分秒)、LocalDateTime(日期时间 /年月日时分秒)——JDK8才加入
① LocalDate只包含日期,可以获取日期字段
② LocalTime只包含时间,可以获取时间字段
③ LocalDateTime包含日期+时间,可以获取日期和时间字段
④ Instant时间戳:类似于Date,提供了一系列和Date类转换的方式

Instant —> Date:
Date date = Date.from(instant);
Date —> Instant:
Instant instant = date.toInstant();

⑤ 第三代日期类 LocalDateTime 更多方法
-MonthDay类:检查重复事件是否是闰年
-增加日期的某个部分
-使用plus方法测试增加时间的某个部分
-使用minus方法测试查著一年前和一年后的日期

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.Instant 

在这里插入图片描述
只有一个构造器 :private LocalDateTime(LocalDate date, LocalTime time)

方法演示

使用DateTimeFormatter格式化(要在 jdk8 之后找,因为 jdk8 才引入)
在这里插入图片描述

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;public static void main(String[] args) {//第三代日期//1. 使用now() 返回表示当前日期时间的 对象LocalDateTime ldt = LocalDateTime.now(); //LocalDate.now();//LocalTime.now()System.out.println("=======使用LocalDateTime==============");System.out.println(ldt);System.out.println("年=" + ldt.getYear());System.out.println("月=" + ldt.getMonth());//得到月份的英文 ,比如MARCHSystem.out.println("月=" + ldt.getMonthValue());//得到月份的数字,比如3System.out.println("日=" + ldt.getDayOfMonth());System.out.println("时=" + ldt.getHour());System.out.println("分=" + ldt.getMinute());System.out.println("秒=" + ldt.getSecond());System.out.println("=======使用LocalDate==================");LocalDate now = LocalDate.now(); //可以获取年月日System.out.println(now.getDayOfYear()+","+now.getMonthValue()+","+now.getDayOfMonth());System.out.println("=======使用LocalTime==================");LocalTime now2 = LocalTime.now();//获取到时分秒System.out.println(now2.getHour()+","+now2.getMinute()+","+now2.getSecond());System.out.println("=======使用DateTimeFormatter格式化=====");//2. 使用DateTimeFormatter 对象来进行格式化// 创建 DateTimeFormatter对象DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");String format = dateTimeFormatter.format(ldt);System.out.println("格式化的日期=" + format);System.out.println("=======plus和minus方法================");//提供 plus 和 minus方法可以对当前时间进行加或者减//看看890天后,是什么时候 把 年月日+时分秒LocalDateTime localDateTime = ldt.plusDays(890);System.out.println("890天后=" + dateTimeFormatter.format(localDateTime));//看看在 3456分钟前是什么时候,把 年月日-时分秒输出LocalDateTime localDateTime2 = ldt.minusMinutes(3456);System.out.println("3456分钟前 日期=" + dateTimeFormatter.format(localDateTime2));}

在这里插入图片描述
时间戳演示

public static void main(String[] args) {//1.通过 静态方法 now() 获取表示当前时间戳的对象Instant now = Instant.now();System.out.println(now);//2. 通过 from 可以把 Instant转成 DateDate date = Date.from(now);//3. 通过 date的toInstant() 可以把 date 转成Instant对象Instant instant = date.toInstant();
}

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

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

相关文章

Redis缓存——Spring Cache入门学习

Spring Cache 介绍 Spring Cache 是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。 Spring Cache 提供了一层抽象,底层可以切换不同的缓存实现,例如: EHCacheCaffeineR…

程序员世界破破烂烂,低代码总在缝缝补补

在经历了十几年的发展后,前端开发变得越来越复杂,门槛也越来越高,要使用当下流行的 UI 组件库,你必须懂 npm、webpack、react/vue,必须熟悉 ES6 语法,最好还了解状态管理,比如 Redux&#xff0c…

【IPv6】IPv6协议

一、IPv6数据报格式 这是与v4报头的对比 1.8bit的版本保留了,v4版本就是4,v6就是6。 2.v6去除了v4的首部长度字段,因为v6的首部长是固定的40字节。 3.服务类型(Type of Service, ToS)和通信类型(Traffi…

Leetcode周赛374补题(3 / 3) - EA专场

不愧是EA的题&#xff0c;我最爱的模拟人生……好难&#xff0c;呜呜 目录 1、找出峰值 - 暴力枚举 2、需要添加的硬币的最小数量 - 思维 贪心 3、统计完全子字符串 - 滑窗 分组循环 1、找出峰值 - 暴力枚举 2951. 找出峰值 class Solution {public List<Integer> …

kubernetes监控GPA安装部署

本文在于指导如何对k8s的监控GPA(Grafana&#xff0c;prometheus以及alertmanager)进行安装部署。 1. 介绍 Prometheus 在真正部署Prometheus之前&#xff0c;应了解一下Prometheus的各个组件之间的关系及作用&#xff1a; 1&#xff09;MertricServer&#xff1a;是k8s集群…

Sentinel基础知识

Sentinel基础知识 资源 1、官方网址&#xff1a;https://sentinelguard.io/zh-cn/ 2、os-china: https://www.oschina.net/p/sentinel?hmsraladdin1e1 3、github: https://github.com/alibaba/Sentinel 一、软件简介 Sentinel 是面向分布式服务架构的高可用流量防护组件…

探究Logistic回归:用数学解释分类问题

文章目录 前言回归和分类Logistic回归线性回归Sigmoid函数把回归变成分类Logistic回归算法的数学推导Sigmoid函数与其他激活函数的比较 Logistic回归实例1. 数据预处理2. 模型定义3. 训练模型4. 结果可视化 结语 前言 当谈论当论及机器学习中的回归和分类问题时&#xff0c;很…

浅谈Python+requests+pytest接口自动化测试框架的搭建

框架的设计思路 首先要明确进行接口自动化需要的步骤&#xff0c;如下图所示&#xff1a; ​然后逐步拆解需要完成的工作&#xff1a; 1&#xff09;了解分析需求&#xff1a;了解接口要实现的功能 2&#xff09;数据准备&#xff1a;根据开发文档确定接口的基本情况&#x…

Python + Appium框架原生代码实现App自动化测试

Step1&#xff1a;首先介绍下pythonappium的框架结构 如下截图所示 . (1)&#xff1a;apk目录主要放置待测app的apk资源&#xff1b; (2)&#xff1a;config目录主要放置配置文件信息&#xff0c;包含&#xff1a;数据库连接配置、UI自动化脚本中所需的页面元素信息及app启…

(C语言)判定一个字符串是否是另一个字符串的子串,若是则返回子串在主串中的位置。

要求&#xff1a; &#xff08;1&#xff09;在主函数中输入两个字符串&#xff0c;调用子函数cmpsubstr()判断&#xff0c;并在主函数输出结果。 &#xff08;2&#xff09;子函数的返回值为-1表示未找到&#xff0c;否则返回子串的位置&#xff08;起始下标&#xff09;。 …

Shell数组函数:数组(一)

一、数组简介&#xff1a; 变量&#xff1a;用一个固定的字符串&#xff0c;代替一个不固定字符串。数组&#xff1a;用一个固定的字符串&#xff0c;代替多个不固定字符串。 二、类型 普通数组&#xff1a;只能使用整数作为数组索引关联数组&#xff1a;可以使用字符串作为…

多表操作、其他字段和字段参数、django与ajax(回顾)

多表操作 1 基于对象的跨表查 子查询----》执行了两句sql&#xff0c;没有连表操作 2 基于双下滑线的连表查 一次查询&#xff0c;连表操作 3 正向和反向 放在ForeignKey,OneToOneField,ManyToManyField的-related_namebooks&#xff1a;双下滑线连表查询&#xff0c;反向…

Redis Hash数据类型

Redis Hash数据类型 几乎所有的主流编程语言都提供了哈希(hash)类型&#xff0c;它们的叫法可能是哈希、字典、关联数组、映射。在 Redis 中&#xff0c;哈希类型是指值本身又是一个键值对结构&#xff0c;形如key “key”&#xff0c;value {ffield1, value1 }, … {fieldN…

LoadBalancer将服务暴露到外部实现负载均衡purelb-layer2模式配置介绍

目录 一.purelb简介 1.简介 2.purelb的layer2工作模式特点 二.layer2的配置演示 1.首先准备ipvs和arp配置环境 2.purelb部署开始 &#xff08;1&#xff09;下载purelb-complete.yaml文件并应用 &#xff08;2&#xff09;查看该有的资源是否创建完成并运行 &#xff…

GCN,GraphSAGE 到底在训练什么呢?

根据DGL 来做的&#xff0c;按照DGL 实现来讲述 1. GCN Cora 训练代码&#xff1a; import osos.environ["DGLBACKEND"] "pytorch" import dgl import dgl.data import torch import torch.nn as nn import torch.nn.functional as F from dgl.nn.pytorc…

Linux系统安装Python3环境

1、默认情况下&#xff0c;Linux会自带安装Python&#xff0c;可以运行python --version命令查看&#xff0c;如图&#xff1a; 我们看到Linux中已经自带了Python2.7.5。再次运行python命令后就可以使用python命令窗口了&#xff08;CtrlD退出python命令窗口&#xff09;。 2…

数据结构——二叉树(相关术语、性质、遍历过程)

遍历操作 二叉树的层次遍历-CSDN博客 二叉树的基本操作-CSDN博客 二叉树的先序遍历非递归实现-CSDN博客 后序遍历的非递归方式实现-CSDN博客 二叉树&#xff1a;已知先序中序求后序或者其他&#xff08;秒解&#xff09;-CSDN博客 因为之前发过一遍&#xff0c;我就不复制…

MES物料的动态批次管理漫谈

在制造企业中&#xff0c;原辅材料占产品制造总成本基本在60%以上&#xff0c;特殊材料加工企业可能达到80%以上&#xff0c;按“2/8管理原则”管理好物料就基本做好制造企业的成本管理&#xff0c;这也许是很多企业向“数字化转型”的一个主要原因&#xff0c;希望借助数字信息…

智能指针与动态内存

动态内存 new placement new 是 C 中的一种内存分配方式&#xff0c;它允许在给定的内存地址上构造对象&#xff0c;而不是在默认的堆上分配新的内存。这对于某些特殊的内存管理场景非常有用&#xff0c;例如在特定的内存池中分配对象。 C11 引入了 "new auto" 语法…

LiveGBS流媒体平台GB/T28181功能-概览中负载信息直播、回放、播放、录像、H265、级联查看负载会话列表

LiveGBS常见问题-概览中负载信息具体表示什么直播、回放、播放、录像、H265、级联等 1、负载信息2、负载信息说明3、会话列表查看3.1、会话列表 4、搭建GB28181视频直播平台 1、负载信息 实时展示直播、回放、播放、录像、H265、级联等使用数目 2、负载信息说明 直播&#x…