重学java 33.API 4.日期相关类

任何事,必作于细,也必成于实

                                        —— 24.5.9

一、Date日期类

1.Date类的介绍

1.概述:

        表示特定的瞬间,精确到亳秒

2.常识:

        a.1000毫秒 =1秒

        b.时间原点:1970年1月1日 0时0分0秒(UNIX系统起始时间),叫做格林威治时间,在0时区上

        c.时区:北京位于东八区,一个时区经度差15度,时间相差一个小时,所以北京时间比时间原点所在时区时间差8个小时

        d.北京经纬度:东经116北纬39.56->温带大陆性季风气候
        e.赤道本初子午线(0度经线)

2.Date类的使用

1.构造:

        Date()->获取当前系统时间
        Date(long time)-> 获取指定时间,传递亳秒值 -> 从时间原点开始算

2.示例:

    public static void main(String[] args) {date01();}private static void date01() {// Date()->获取当前系统时间Date date = new Date();System.out.println("Date():"+date);// Date(long time)-> 获取指定时间,传递亳秒值 -> 从时间原点开始算Date data1 = new Date(1000);System.out.println("Date(1000):"+data1);}

3.Date类的常用方法

        1.void setTime(long time) --> 设置时间,传递亳秒值 --> 从时间原点开始算

        2.long getTime() --> 获取时间,返回亳秒值

示例:
    public static void main(String[] args) {date02();}private static void date02() {Date date = new Date();// 1.void setTime(long time) --> 设置时间,传递亳秒值 --> 从时间原点开始算date.setTime(1000);// 2.long getTime() --> 获取时间,返回亳秒值System.out.println(date.getTime());}

二、Calender日历类

1.概述:

        日历类,抽象类

2.获取Calendar中的方法:

getinstance

        static calendar getInstance()

import java.util.Calendar;public class Demo180Calender {public static void main(String[] args) {calender();}private static void calender() {// 构造方法Calendar calendar = Calendar.getInstance();System.out.println(calendar);}
}

3.月份对比:

国外:0 1 2 3 4 5 6 7 8 9 10 11

国内:1 2 3 4 5 6 7 8 9 10 11 12

字段值                                                含义
YEAR                                                   年                         
MONTH                                    月(从0开始,可以+1使用)
DAY_OF_MONTH                       月中的天(几号)
HOUR                                           时(12小时制)
HOUR_OF DAY                            时(24小时制)
MINUTE                                               分
SECOND                                             秒
DAY_OF_WEEK                周中的天(周几,周日为1,可以-1使用)

4.常用方法

        ① int get(int field)->返回给定日历字段的值
        ② void set(int field,int value) :将给定的日历字段设置为指定的值

        ③ void add(int field,int amount):根据日历的规则,为给定的日历字段添加或者减去指定的时间量

        ④ Date getTime():将calendar转成Date对象

   private static void calender01() {Calendar calendar = Calendar.getInstance();// 多态//        ① int get(int field)->返回给定日历字段的值int year = calendar.get(Calendar.YEAR);System.out.println("year1:"+year);//        ② void set(int field,int value) :将给定的日历字段设置为指定的值calendar.set(Calendar.YEAR,2027);System.out.println("year2:"+calendar.get(Calendar.YEAR));//        ③ void add(int field,int amount):根据日历的规则,为给定的日历字段添加或者减去指定的时间量calendar.add(Calendar.YEAR,-1);System.out.println("year3:"+calendar.get(Calendar.YEAR));//        ④ Date getTime():将calendar转成Date对象Date date = Calendar.getInstance().getTime();System.out.println("date = "+date);}

5.扩展方法

void set(int year,int month,int date) --> 直接设置年月日


需求:键盘输入一个年份,判断这一年是闰年,还是平年

步骤:

        1.创建Calendar对象
        2.创建scanner对象,键盘录入一个年份
        3.调用set方法,传递年,月,日,set(年,2,1)->国外是0-11,所以设置成2月就是代表3月
        4.将day减1天(3月1日减1天,就是2月最后一天,知道2月最后一天了,就知道是平年还是闰年了)

        5.获取day判断平年还是闰年,输出结果

    private static void calender03() {// 1.创建Calendar对象Calendar calendar = Calendar.getInstance();// 2.创建Scanner对象,键盘录入一个年份Scanner sc = new Scanner(System.in);int year = sc.nextInt();// 3.调用set方法,传递年,月,日,set(年,2,1)->国外是0-11,所以设置成2月就是代表3月calendar.set(year,2,1);// 4.将day减1天(3月1日减1天,就是2月最后一天,知道2月最后一天了,就知道是平年还是闰年了)calendar.add(Calendar.DATE,-1);int day = calendar.get(Calendar.DATE);// 5.获取day判断平年还是闰年,输出结果if(day == 29){System.out.println(year+"是闰年");}else{System.out.println(year+"是平年");}}

三、SimpleDateFormat日期格式化类

1.概述

        格式化日期的类

2.构造

        SimpleDateFormat(String pattern)

3.Pattern代表:

        代表的是我们自己指定的日期格式,字母不能改变,但是中间的连接符可以改变

        yyyy-MM-dd HH:mm:ss

        y:年 M:月 dd:日 HH:时 mm:分 ss:秒

4.常用方法

        1.String format(Date date) --> 将Date对象按照指定的格式转成String字符串

        2.Date parse(String source) --> 将符合目期格式的String字符串转成Date对象

5.示例

    public static void main(String[] args) throws ParseException {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 1.String format(Date date) --> 将Date对象按照指定的格式转成StringString time1 = sdf.format(new Date());System.out.println("time1 = "+time1);// 2.Date parse(String source) --> 将符合目期格式的字符串转成Date对象String time2 = "2002-11-04 11:30:31";// 3.处理异常Date date = sdf.parse(time2);System.out.println("date = "+date);}

四、JDK8新日期类

1.LocalDate本地日期

1.概述:

        LocalDate是一个不可变的日期时间对象,表示日期,通常被视为年月日

2.获取:

        static LocalDate now() --> 创建LocalDate对象
        static LocalDate of(int year,int month,int dayofMonth) --> 创建LocalDate对象,设置 年月日时分秒

        示例:
    public static void main(String[] args) {// static LocalDate now() --> 创建LocalDate对象LocalDateTime localDateTime = LocalDateTime.now();System.out.println(localDateTime);// static LocalDate of(int year,int month,int dayofMonth) --> 创建LocalDate对象,设置 年月日LocalDateTime localDateTime1 = LocalDateTime.of(2002,11,4,10,10,10);System.out.println(localDateTime1);}

3.获取日期字段的方法:名字get开头

        ① int getYear() --> 获取年份
        ② int getMonthvalue() --> 获取月份
        ③ int getDayofMonth() --> 获取月中的第几天

        示例:
    public static void main(String[] args) {LocalDate localDate = LocalDate.now();// ① int getYear() --> 获取年份System.out.println(localDate.getYear());// ② int getMonthvalue() --> 获取月份 getMonth获取的是枚举,getMonthValue获取的是具体的日子System.out.println(localDate.getMonthValue());// ③ int getDayofMonth() --> 获取月中的第几天System.out.println(localDate.getDayOfMonth());}

4.设置日期字段的方法:名字是with开头

        LocalDate withYear(int year):设置年份
        LocalDate withMonth(int month):设置月份
        LocalDate withDayofMonth(int day):设置月中的天数

        示例:
    private static void with() {// LocalDate withYear(int year):设置年份LocalDate localDate = LocalDate.now();LocalDate localDate1 = localDate.withYear(2002);System.out.println(localDate1);// LocalDate withMonth(int month):设置月份LocalDate localDate2 = localDate.withMonth(11);System.out.println(localDate2);// LocalDate withDayofMonth(int day):设置月中的天数LocalDate localDate3 = localDate.withDayOfMonth(4);System.out.println(localDate3);// 链式调用赋值LocalDate localDate4 = localDate.withYear(2002).withMonth(11).withDayOfMonth(4);System.out.println(localDate4);}

5.日期字段偏移

设置日期字段的偏移量,方法名plus开头,向偏移

设置日期字段的偏移量,方法名minus开头,向偏移

        示例:
    private static void PlusAndMinus() {LocalDate localDate = LocalDate.now();LocalDate localDate1 = localDate.plusYears(1);System.out.println("localDate1 = "+ localDate1);LocalDate localDate2 = localDate1.minusYears(2);System.out.println("localDate2 = "+ localDate2);}

2.Period和Duration类

1.Period 计算日期之间的偏差

        方法:

        static Period between(LocalDate d1,LocalDate d2):计算两个日期之间的差值
                getyears()->获取相差的年
                getMonths()->获取相差的月
                getDays()->获取相差的天

        示例:
    private static void period() {// static Period between(LocalDate d1,LocalDate d2):计算两个日期之间的差值LocalDate local1 = LocalDate.of(2022,12,12);LocalDate local2 = LocalDate.of(2021, 11, 11);Period period = Period.between(local2,local1);// getrears()->获取相差的年System.out.println(period.getYears());// getMonths()->获取相差的月System.out.println(period.getMonths());// getDays()->获取相差的天System.out.println(period.getDays());}

2.Duration 计算时间之间的偏差

方法:

        1.static Duration between(Temporal startInclusive, Temporal endExclusive) --> 计算时间差

        2.Temporal:是一个接口,实现类:LocalDate、LocalDateTime
        3.参数需要传递 Temporal 的实现类对象,注意要传递 LocalDateTime

        因为Duration计算精确时间偏差,所以需要传递能操作精确时间的 LocalDateTime
        4.利用Dutation获取相差的时分秒 --> to开头
                toDays():获取相差天数
                toHours():获取相差小时
                toMinutes():获取相差分钟
                toMillis():获取相差秒(亳秒)

示例:
    private static void duration() {// toDays():获取相差天数// toHours():获取相差小时// toMinutes():获取相差分钟// toMillis():获取相差秒(亳秒)LocalDateTime local1 = LocalDateTime.of(2022,12,12,12,12,12);LocalDateTime local2 = LocalDateTime.of(2021, 11, 11,11,11,11);Duration duration = Duration.between(local2,local1);System.out.println(duration.toDays());System.out.println(duration.toHours());System.out.println(duration.toMinutes());System.out.println(duration.toMillis());}

如果计算年月日,就用Period
如果计算时分秒,就用Duration

3.DateTimeFormatter 日期格式化类

获取:

        static DateTimeFormatter ofPattern(String pattern) --> 获取对象,指定格式

方法:
    private static void format() {DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");LocalDateTime localDateTime = LocalDateTime.now();String time = dtf.format(localDateTime);System.out.println("time = "+time);}

TemporalAccessor parse(CharSequence text) --> 将符合规则的字符串转成日期对象

                       如果想将TemporalAccesssor转成我们常见的LocalDateTime日期对象,就需要用到LocalDateTime中的静态方法:
        static LocalDateTime from(TemporalAccessor temporal)

    private static void parse() {DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");String time = "2000-10-10 10:10:10";TemporalAccessor temporalAccessor = dtf.parse(time);System.out.println("temporalAccessor = "+temporalAccessor);LocalDateTime localDateTime = LocalDateTime.from(temporalAccessor);System.out.println("localDateTime = "+localDateTime);}

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

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

相关文章

模拟实现链表的功能

1.什么是链表? 链表是一种物理存储结构上非连续存储结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的 。 实际中链表的结构非常多样,以下情况组合起来就有8种链表结构: 单向或者双向 带头或者不带头 …

车载测试到底怎么样?真实揭秘!

什么是车载智能系统测试? 车载智能系统,是汽车智能化重要的组成部分,由旧有的车载资通讯系统结合联网汽车技术所演进而来,随着软硬件技术的不断进步, 让车载智能系统拥有强大的运算能力及多元化的应用功能。 车载智能…

苹果iPad M4:Console级别图形和AI强大功能

苹果iPad M4:Console级别图形和AI强大功能 Apple近日发布了最新的M4芯片,旨在为iPad Pro系列带来明显的性能提升和电池续航时间延长。在本篇报道中,我们将详细介绍M4芯片的特点、性能改进和为创意专业人士带来的影响。 M4芯片的强大功能 …

图解项目管理必备十大管理模型及具体应用建议

心智模型是根深蒂固存在于人们心中,影响人们如何理解这个世界(包括我们自己、他人、组织和整个世界),以及如何采取行动的诸多假设、成见、逻辑、规则,甚至图像、印象等。本图通过对心智模型的分类和描述,表…

【Linux】shell基础,shell脚本

Shell Shell是一个用C语言编写的程序,接受用户输入的命令,并将其传递给操作系统内核执行。Shell还负责解释和执行命令、管理文件系统、控制进程,是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言 Shell脚本 Sh…

上位机图像处理和嵌入式模块部署(树莓派4b和c++新版本的问题)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 自己读书的时候是03年,学习c也是差不多04年开始,到现在基本上20年了。这20年过程当中,其实c的语言版本一直是在…

【stomp 实战】spring websocket 接收消息源码分析

后台消息的发送过程,我们通过spring websocket用户消息发送源码分析已经了解了。我们再来分析一下后端接收消息的过程。这个过程和后端发送消息过程有点类似。 前端发送消息 前端发送消息给服务端的示例如下: 发送给目的/app/echo一个消息。 //主动发…

科林算法_3 图

一、图论基础 多对多的关系 定义&#xff1a;G(V,E) Vertex顶点 Edge边 顶点的集合V{v1,v2} 边的结合E{(v1,v2)} 无向图(1,2) 有向图<1,2> 依附&#xff1a;边(v1,v2)依附于顶点v1,v2 路径&#xff1a;&#xff08;v1,v2)(v2,v3) 无权路径最短&#xff1a;边最少…

程序员不会告诉老板的那些神器

目录 1. 持续集成工具&#xff1a;CruiseControl&#xff08;简称CC&#xff09; 2. 代码风格、质量检查工具&#xff1a;StyleCop 3.AI工具 3.1 AI助力编写开发日报 3.2 AI助力编写普适性代码 3.3 AI助力生成代码注释 3.4 AI助力重构代码去掉“坏味道” 3.5 AI助力…

【小白的大模型之路】基础篇:Transformer细节

基础篇&#xff1a;Transformer 引言模型基础架构原论文架构图EmbeddingPostional EncodingMulti-Head AttentionLayerNormEncoderDecoder其他 引言 此文作者本身对transformer有一些基础的了解,此处主要用于记录一些关于transformer模型的细节部分用于进一步理解其具体的实现机…

渗透之sql注入---宽字节注入

目录 宽字节注入原理&#xff1a; 实战&#xff1a; 源码分析&#xff1a; 开始注入&#xff1a; 找注入点&#xff1a; 注入数据库名&#xff1a; 注入表名&#xff1a; 注入列明&#xff1a; 注入具体值&#xff1a;http://sqli-labs:8084/less-32/?id-1%df%27unio…

luceda ipkiss教程 66:金属线的钝角转弯

案例分享&#xff1a;金属线的135度转弯&#xff1a; 所有代码如下&#xff1a; from si_fab import all as pdk import ipkiss3.all as i3 from ipkiss.geometry.shape_modifier import __ShapeModifierAutoOpenClosed__ from numpy import sqrtclass ShapeManhattanStub(__…

《ESP8266通信指南》11-Lua开发环境配置

往期 《ESP8266通信指南》10-MQTT通信&#xff08;Arduino开发&#xff09;-CSDN博客 《ESP8266通信指南》9-TCP通信&#xff08;Arudino开发&#xff09;-CSDN博客 《ESP8266通信指南》8-连接WIFI&#xff08;Arduino开发&#xff09;&#xff08;非常简单&#xff09;-CSD…

短信公司_供应群发短信公司

短信公司——供应群发短信公司 短信公司作为一种为企业提供群发短信服务的服务商&#xff0c;正逐渐受到市场的青睐。供应群发短信公司作为其中的一种类型&#xff0c;为各行各业的企业提供高效、便捷的短信推广渠道。本文将介绍短信公司的作用以及供应群发短信公司的特点和优势…

Django之创建Model以及后台管理

一&#xff0c;创建项目App python manage.py startapp App 二&#xff0c;在App.models.py中创建类&#xff0c;以下是示例 class UserModel(models.Model):uid models.AutoField(primary_keyTrue, auto_createdTrue)name models.CharField(max_length10, uniqueTrue, db…

ICode国际青少年编程竞赛- Python-2级训练场-坐标与列表练习

ICode国际青少年编程竞赛- Python-2级训练场-坐标与列表练习 1、 for i in range(6):Spaceship.step(Item[i].x - Spaceship.x)Dev.step(Item[i].y - Dev.y)Dev.step(Spaceship.y - Dev.y)2、 for i in range(5):Spaceship.step(Item[i].x - Spaceship.x)Flyer[i].step(Item[…

车载测试___面试题和答案归纳

车载面试题 一、实车还在设计开发阶段&#xff0c;大部分测试通过什么测试&#xff1f; 答案&#xff1a;通过台架和仿真来完成的 二、测试部分划分&#xff1f; 测试部门是分为自研&#xff0c;系统&#xff0c;验收&#xff0c;自研部门是开发阶段测试&#xff0c;系统部门…

重发被恶意举报的主食冻干测评,速看可能再被删!PR、希喂和SC真实对比PK!

要给猫咪提供高品质主食&#xff0c;主食冻干是不二之选。主食冻干不仅含肉量高、吸收消化率高&#xff0c;还有着丰富的、普通猫粮无法提供的各类营养素&#xff0c;满足猫咪微量元素的需求。可以说是营养与生骨肉喂养媲美&#xff0c;又能完美避开生骨肉细菌超标带来的一系列…

如何优雅的实现接口限流?

首先限流&#xff0c;其实解决方案有很多&#xff0c;比如通过nginx配置&#xff0c;通过gateway网关进行限流&#xff0c;比如Spring Cloud GateWay整合熔断器实现限流 但是以上都是全局的&#xff0c;如何灵活的针对某些接口进行不同级别的限流呢&#xff1f; 方案一&#…

超标量处理器设计:重排序缓存(ROB)

★超标量处理器的很多地方用到了重排序缓存&#xff0c;但是我对它不是很了解&#xff0c;所以我整理一下重排序缓存的知识点。 重排序缓存(ROB)在确保乱序执行的指令能够正确地完成和提交(Commit)&#xff0c;也可以用来寄存器重命名。 ROB是一个先进先出的表&#xff0c;每个…