重学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对象按照指定的格式转成String
        String 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);
    }

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux 操作系统线程1

目录 一、线程 1.1线程的基本概念 1.2 线程相关的API函数 1.2.1 线程的创建 1.2.2 线程退出 1.2.3 线程等待函数 1.2.4 获取线程ID 1.2.5 线程取消 1.2.6 线程的清理函数 一、线程 1.1线程的基本概念 线程是属于进程;一个进程可以有多个线程&#xff…

salmon使用体验

文章目录 salmon转录本定量brief模式一:fastq作为输入文件需要特别注意得地方 模式二: bam文件作为输入 salmon转录本定量 brief 第一点是,通常说的转录组分析其中有一项是转录本定量,这是一个很trick的说话,说成定量…

深度学习——前馈全连接神经网络(鸢尾花)

前馈全连接神经网络对鸢尾花数据集进行分类 1.导入所需要的包2.打印训练集和测试集二维数组3.定义模型4.打印模型信息5.权重和偏执6.编译网络和训练网络7.打印二维数据表格8.绘制图像9.查看准确率 1.鸢尾花数据集可以用 from sklearn.datasets import load_iris 方式获取&#…

医院预约挂号|基于Springboot+vue的医院预约挂号系统小程序的设计与实现(源码+数据库+文档)

医院预约挂号系统小程序 目录 基于Springboot+vue的医院预约挂号系统小程序设计与实现 一、前言 二、系统设计 三、系统功能设计 1小程序端 后台功能模块 4.2.1管理员功能 4.2.2医生功能 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选…

jsp 实验16 MVC 表白墙

源代码以及执行结果截图&#xff1a; ExpressWish_Bean.java package web; import java.util.HashMap; import java.util.ArrayList; import java.util.Iterator; public class ExpressWish_Bean { public HashMap<String,ExpressWish> wishList; ArrayList&…

#内部类#

1,概念 如果一个类定义在另一个类的内部&#xff0c;这个内部类就叫做内部类。内部类是一个独立的类&#xff0c;它不属于外 部类&#xff0c;更不能通过外部类的对象去访问内部类的成员。外部类对内部类没有任何优越的访问权限。重点&#xff1a;内部类是一个独立的类 注意&…

JavaEE 多线程详细讲解(2)

1.线程不安全分析 &#xff08;1&#xff09;线程不安全的主要原因就是&#xff0c;系统的抢占式执行&#xff0c;对于内核设计者来说&#xff0c;这是非常方便的一个执行方式&#xff0c;但是这却却导致线程不安全的问题&#xff0c;也有不抢占执行的系统&#xff0c;但是这种…

从心理学角度看,GPT 对人有什么影响?

开启个性化AI体验&#xff1a;深入了解GPT的无限可能 导言 GPT 与我们日常生活的融合标志着技术进步的重大飞跃&#xff0c;为提高效率和创新提供了前所未有的机遇。然而&#xff0c;当我们与这些智能系统日益紧密地交织在一起时&#xff0c;探索它们对个人产生的细微的心理影响…

15-LINUX--线程的创建与同步

一.线程 1.线程的概念 线程是进程内部的一条执行序列或执行路径&#xff0c;一个进程可以包含多条线程。 2.线程的三种实现方式 ◼ 内核级线程&#xff1a;由内核创建&#xff0c;创建开销大&#xff0c;内核能感知到线程的存在 ◼ 用户级线程&#xff1a;线程的创建有用户空…

抖音APP运用的AI技术拆解

1.推荐系统&#xff08;RS&#xff09; 用户画像&#xff1a;根据用户的信息&#xff08;如地区、性别、年龄、收藏、关注......&#xff09;进行分析&#xff0c;构建用户画像&#xff0c;对用户进行分类&#xff1b; 行为分析&#xff1a;将用户的显形行为数据&#xff08;如…

PaddleOCR使用

最近在项目过程中需要用到文字识别的能力&#xff0c;之前没有接触过。需要对现有的开源能力进行调研和学习。 1. 基本概念 1.1 PaddlePaddle PaddlePaddle 是一个由百度开源&#xff0c;基于 Python 的深度学习框架。PaddlePaddle 针对不同的硬件环境提供了不同的安装包或安…

2024/5/9 QTday4

完成定时器制作 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);connect(&timer2, &QTimer::timeout, this, &Widget::label_begin);connect(&…

Linux0.11中MINIX 文件系统

阅读linux 的源码的时候对minix 文件系统有很多的疑惑&#xff0c;根据自己的认识将这些做一个总结。 MINIX 文件系统由六个部分组成&#xff0c;分别是引导块&#xff0c;超级块&#xff0c;i结点位图&#xff0c;逻辑块位图&#xff0c;i结点&#xff0c;数据块。 引导块&am…

Python 中 “yield“ 的不同行为

在我们使用Python编译过程中&#xff0c;yield 关键字用于定义生成器函数&#xff0c;它的作用是将函数变成一个生成器&#xff0c;可以迭代产生值。yield 的行为在不同的情况下会有不同的效果和用途。 1、问题背景 在 Python 中&#xff0c;“yield” 是一种生成器&#xff0…

【Pytorch】1.读取训练数据集

导入Dataset类 from torch.utils.data import Dataset # 注意是Dataset&#xff08;大写&#xff09;的才是类通过jupyter我们可以阅读一下Dataset类的具体使用方法 help(Dataset) # 或者直接 Dataset??我们可以看到具体对Dataset类的解释 从蓝色字体我们可以得出 所有的代…

鸿蒙开发-ArkTS语言-容器-非线性容器

鸿蒙开发-UI-web 鸿蒙开发-UI-web-页面 鸿蒙开发-ArkTS语言-基础类库 鸿蒙开发-ArkTS语言-并发 鸿蒙开发-ArkTS语言-并发-案例 鸿蒙开发-ArkTS语言-容器 文章目录 前言 一、非线性容器 1.HashMap 2.HashSet 3.TreeMap 4.TreeSet 5.LightWeightMap 6.LightWeightSet 7.P…

vue uniapp 小程序 判断日期是今天(显示时分秒)、昨天、本周的周几、超出本周显示年月日

效果图&#xff1a; util.js /*** 转换时间*/ const messageFormat (datetime) >{ let result "";let currentTime new Date();if(isToday(datetime)){result datetime.substring(11,16);}else if(isYesterday(datetime)){result "昨天";}else if(…

EasyExcel导出带自定义下拉框数据的Excel模板

文章目录 前言&#x1f4dd;一、导入依赖二、创建导出工具1.创建模板实体类2.创建自定义注解3.添加动态选择接口4.EasyExcelUtil工具类 三、导出、导入Excel接口1.导出接口2.导入接口3.导出结果 总结 前言&#x1f4dd; 在项目中导入excel时需要通过下拉框选择值传入&#xff…

解决在Outlook中预定Teams会议不显示入会链接的问题

今天遇到一个很蛋疼的teams问题&#xff0c;花了点时间才解决。本来以为是很简单的问题&#xff0c;随便网上冲浪一下就能找到答案的&#xff0c;结果根本就没有好的解决方案&#xff0c;所以我分享出来希望后来的老哥少走点弯路。 问题描述 简单来说&#xff0c;就是在Outlo…

Pytorch入门—Tensors张量的学习

Tensors张量的学习 张量是一种特殊的数据结构&#xff0c;与数组和矩阵非常相似。在PyTorch中&#xff0c;我们使用张量来编码模型的输入和输出&#xff0c;以及模型的参数。 张量类似于NumPy的ndarrays&#xff0c;只是张量可以在GPU或其他硬件加速器上运行。事实上&#xf…