重学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.hqwc.cn/news/681853.html

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

相关文章

一个递推通项公式研究

递推关系为a(n) ​pa(n−1) ​ qa(n−2) ​,本项前一项*2前前项,具体如 1,1,3,7,17,41,99,239,…… 一般的递推关系可以用以下方法 得两个解: …

WPF控件之StackPanel布局控件

StackPanel别名堆栈panel 使其子元素按照一定方式进行布局&#xff0c;子元素排布方式要么设置为水平排布&#xff0c;要么垂直排布。 属性 Orientation设置排列方式(默认的是垂直排布) : Horizontal水平排布 Vertical 垂直排布 实例 <StackPanel Orientation"Vert…

【Python】什么是皮尔森系数

我不完美的梦 你陪着我想 不完美的勇气 你说更勇敢 不完美的泪 你笑着擦干 不完美的歌 你都会唱 我不完美心事 你全放在心上 这不完美的我 你总当做宝贝 你给我的爱也许不完美 但却最美 &#x1f3b5; 周冬雨《不完美女孩》 皮尔森相关系数&#xff08;Pe…

力扣HOT100 - 4. 寻找两个正序数组的中位数

解题思路&#xff1a; 两个数组合并&#xff0c;然后根据奇偶返回中位数。 class Solution {public double findMedianSortedArrays(int[] nums1, int[] nums2) {int m nums1.length;int n nums2.length;int[] nums new int[m n];if (m 0) {if (n % 2 0) return (nums2…

自动控制原理学习--平衡小车的控制算法(三)

上一节PID的simulin仿真&#xff0c;这一节用LQR 一、模型 二、LQR LQR属于现代控制理论的一个很重要的点&#xff0c;这里推荐B站的【Advanced控制理论】课程&#xff08;up主DR_CAN&#xff09;&#xff0c;讲得很好&#xff0c;这里引用了他视频里讲LQR的ppt。 LQR属于lo…

k8s概述及核心组件

一、k8s概述 1.1 引言 docker compose 单机编排工具 有企业在用 docker swarm 能够在多台主机中构建一个docker集群 基本淘汰集群化管理处理工具 容器 微服务封装 dockerfile 编写成镜像 然后进行发布 dockerfile 可以写成shell脚本&#xff08;函数做调…

手机视频提取gif怎么操作?分享这个方法不能错过!

随着网络的发展动态gif表情包已经是人们交流的重要部分了。想要通过手机来实现视频转换gif的操作&#xff0c;还不想下载软件的情况下。可以通过使用手机端的视频转gif工具-GIF中文网&#xff0c;无需下载软件。手机端轻松一键就能在线实现视频提取gif的操作。一起来看看具体的…

每日Attention学习4——Spatial Attention Module

模块出处 [link] [code] [MM 21] Complementary Trilateral Decoder for Fast and Accurate Salient Object Detection 模块名称 Spatial Attention Module (SAM) 模块作用 空间注意力 模块结构 模块代码 import torch import torch.nn as nn import torch.nn.functional a…

迅睿CMS中实现关键词搜索高亮

在迅睿CMS系统中实现关键词搜索高亮是提升用户体验和搜索效果的重要手段。当用户搜索某个关键词时&#xff0c;将搜索结果中的关键词高亮显示&#xff0c;可以帮助用户更快速地定位到所需信息。 关键词高亮的实现 在迅睿CMS中&#xff0c;你可以使用内置的dr_keyword_highlig…

3D点云处理的并行化

在我们的项目中&#xff0c;我们研究了数百万级 3D 点云上的空间局部计算&#xff0c;并提出了两种主要方法&#xff0c;可以提高 GPU 的速度/吞吐量&#xff0c;同时保持最终结果的性能准确性。 通过空间局部&#xff0c;我们的意思是每个像素独立地基于其局部邻域中的点执行…

【python】模块与包

Python中的模块和包是组织和管理代码的重要工具。通过模块和包&#xff0c;你可以更好地管理和重用你的代码&#xff0c;使得代码更加模块化和可维护。 目录 前言 正文 一、模块 1、模块的分类 1&#xff09;内置模块 python解释器中默认拥有的模块可以直接使用&#xff08;…

Java基础编程(高级部分)

1. 类变量和类方法 1.1 什么是类变量 类变量也叫静态变量/静态属性&#xff0c;是该类的所有对象共享的变量,任何一个该类的对象去访问它时,取到的都是相同的值同样任何一个该类的对象去修改它时,修改的也是同一个变量。 1.2 定义类变量 1.3 访问类变量 类名.类变量名 或者 对…