日期类(java)

news2024/11/25 11:34:39

文章目录

  • 第一代日期类 Date
    • 常用构造方法
    • SimpleDateFormat 日期格式化类
      • 日期转字符串(String -> Date)
      • 字符串转日期 (String->Date)
  • 第二代日期类 Calendar
    • 常用字段与如何得到实例对象
    • 相关 API
  • 第三代日期类(LocalDate\TIme)
    • 日期,时间,日期时间
    • 日期时间格式化(DateTimeFormatter)
    • 时间戳
    • 计算时间(Time)对象间隔(Duration)
    • 计算日期(Date)对象间隔 (Period)
    • 日期(Date)矫正器(TemporalAdjusters)

第一代日期类 Date

常用构造方法

第一种:Date()
第二种:Date(long 毫秒)

public class Main {
    public static void main(String[] args) throws ParseException {

        //默认国外形式
        Date date = new Date();
        System.out.println(date);

        //创建了一个代表从1970年1月1日00:00:00 GMT开始后的1000毫秒的日期和时间。
        //但是输出 toString 的时候它会显示当前系统所在时区的时间。
        //因此,如果你的系统位于东八区(例如中国标准时间),那么输出将会是 "08:00:00"
        Date date1 = new Date(1000);
        System.out.println(date1);
    }
}

1000 是 一秒,1000 * 60 就是 60秒,1000 * 60 * 10 就是 10分钟



SimpleDateFormat 日期格式化类

在这里插入图片描述

在这里插入图片描述


日期转字符串(String -> Date)

用 String format(Date date) 方法转成字符串

public class Main {
    public static void main(String[] args) throws ParseException {

        Date date = new Date();

        //y:年份,M:年中月份,d:月中日期,F:星期, H:一天中的小时,m:小时中的分钟
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd 星期F HH:mm");

		//转成字符串
        String date1 = sdf.format(date);
        //输出2024-06-28 星期 4 22:42
        System.out.println(date1);
    }
}

字符串转日期 (String->Date)

用 Date parse(String source) 转成 Date

public class Main {
    public static void main(String[] args) throws ParseException {

        String data = "2024-6-28 星期5 22:49";
		
		//格式和上面对不上会报 parseException 异常		
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd 星期F HH:mm");
        Date date = sdf.parse(data);
        System.out.println(data);

    }
}

格式和上面对不上会报 parseException 异常




第二代日期类 Calendar

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



常用字段与如何得到实例对象

在这里插入图片描述
Calender 没有专门的格式化方法,需要程序员自己组合

public class Main {
    public static void main(String[] args) throws ParseException {

        Calendar calendar = Calendar.getInstance();
        System.out.println(calendar);

        //底层是这样的:public static final int YEAR = 1;
        int year = calendar.get(1);
        int year2 = calendar.get(Calendar.YEAR);
        System.out.println(year);
        System.out.println(year2);

    }
}


相关 API

在这里插入图片描述

public class Main {
    public static void main(String[] args) throws ParseException {

        Calendar calendar = Calendar.getInstance();
        //把年设置成 2004
        calendar.set(Calendar.YEAR, 2004);
        System.out.println(calendar.get(Calendar.YEAR));

        //加一年
        calendar.add(Calendar.YEAR, -1);
        System.out.println(calendar.get(Calendar.YEAR));

        //关联日期
        String strDate = "2008-05-20 15:30:30";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = sdf.parse(strDate);
        calendar.setTime(date);
        System.out.println(calendar.get(Calendar.YEAR));
        
    }
}



第三代日期类(LocalDate\TIme)

JDK 8 加入的
LocalDate (日期/年月日),LocalTime (时间/时分秒),LocalDateTime (日期时间)

老日期类,线程不安全, 新的支持线程安全,建议直接用这个就行



日期,时间,日期时间

在这里插入图片描述

public class Main {
    public static void main(String[] args) throws ParseException {
        //获取当前日期
        LocalDateTime ldt = LocalDateTime.now();
        System.out.println(ldt);

        //获取指定日期时间
        LocalDateTime ldt2 = LocalDateTime.of(2024,6,29,10,10);
        System.out.println(ldt);

        //加减日期
        ldt2 = ldt2.plusYears(2).plusYears(-1);
        System.out.println(ldt2);

        //获取年
        int year = ldt2.getYear();
        System.out.println(year);
    }
}


日期时间格式化(DateTimeFormatter)

在这里插入图片描述
在这里插入图片描述

public class Main {
    public static void main(String[] args) throws ParseException {
        
        
        //LocalDateTime -> String
       LocalDateTime localDateTime = LocalDateTime.now();
       DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
       String s = dtf.format(localDateTime);
       System.out.println(s);

        //String -> LocalDateTime
        String date = "2024-06-29";
        DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        //格式不对会抛 parse 异常
        LocalDate localDate =  LocalDate.parse(date, dtf2);
        System.out.println(localDate);

    }
}

如果是 LocalDateTime 必须要包含时间和日期



时间戳

时间戳:1970年1月1日零时零分零秒,到系统当前时间的总毫秒数

public class Main {
    public static void main(String[] args) throws ParseException {

        //获取系统当前时间(UTC:全球标准时间)
        Instant instant = Instant.now();

        //获取时间戳
        long cuo = instant.toEpochMilli();
        System.out.println(cuo);

    }
}


计算时间(Time)对象间隔(Duration)

在这里插入图片描述

public class Main {
    public static void main(String[] args) throws ParseException {
        
    
        LocalDateTime time1 = LocalDateTime.of(2024, 6,29,8,8);
        LocalDateTime time2 = LocalDateTime.of(2023, 5,27,8,8);

        //两时间对象相差对少天
        //后面 - 前面
        Duration duration = Duration.between( time2,time1);
        System.out.println(duration.toDays());

        //两时间相差多少天
        System.out.println(duration.toHours());


    }
}


计算日期(Date)对象间隔 (Period)

在这里插入图片描述

public class Main {
    public static void main(String[] args) throws ParseException {

        LocalDate localDate1= LocalDate.of(2007, 7,7);
        LocalDate localDate2 = LocalDate.of(2008, 7,7);

        Period between = Period.between(localDate1, localDate2);
        //相差年数
        System.out.println(between.getYears());

    }
}


日期(Date)矫正器(TemporalAdjusters)

public class Main {
    public static void main(String[] args) throws ParseException {

       //获取系统当前时间
        LocalDateTime now = LocalDateTime.now();
        //矫正时间
        LocalDateTime localDateTime = now.with(TemporalAdjusters.lastDayOfMonth());
        System.out.println(localDateTime);
    }
}

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

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

相关文章

datax入门(data-web的简单使用)——02

datax入门(data-web的简单使用)——02 1. 前言1.1 关于data-web官网1.1.1 源码下载1.1.2 datax-Web部署手册1.1.2.1 Linux环境部署手册1.1.2.2 本地开发环境部署手册 1.2 关于datax入门 2. 下载之后打包、启动、登录2.1 我的本地环境2.2 修改配置2.3 初始…

[C语言]指针

一、指针简介 1、指针(Pointer)是C语言的一个重要知识点,其使用灵活、功能强大,是C语言的灵魂 2、指针与底层硬件联系紧密,使用指针可操作数据的地址,实现数据的间接访问 3、计算机存储机制 4、定义指针 (1&#x…

C++ 史上首次超越 C,仅次于Python!【送源码】

TIOBE 公布了 2024 年 6 月的编程语言排行榜——C 史上首次超越 C,跃至榜二,仅次于 Python。 C 是一种广泛应用于嵌入式系统、游戏开发和金融交易软件等领域的语言,在本月成功超越了 C, 成为了 TIOBE 指数中新的第二名。 这是 C …

一个 API 客户端和一份 TS 学习手册

第75期: Insomnia:超好看的 API 客户端 项目介绍: 一款适用于 GraphQL、REST、WebSockets 和 gRPC 的开源 API 客户端,颜值超高。 跨平台,支持 Mac、Windows 和 Linux。但不支持网页版,需要下载客户端。…

[XYCTF新生赛2024]-PWN:EZ2.0?(arm架构,arm架构下的系统调用)

查看保护 查看ida 完整exp: from pwn import*pprocess(./arm) premote(gz.imxbt.cn,20082) svc0x0001c58c mov_r2_r4_blx_r30x00043224 pop_r70x00027d78 pop_r40x000104e0 pop_r30x00010160 pop_r10x0005f824 pop_r00x0005f73c sh0x0008A090payloadba*0x44 payloa…

重生奇迹MU新手攻略:入坑之后怎样快速升级

今天为大家带来重生奇迹MU新手升级攻略,如果你希望在游戏中快速提升等级并达到满级,以下是一些快速升级的方法: 确保经验章及时更新。经验章是升级过程中必不可少的道具,根据个人偏好选择是否使用黄金线。对于有较多时间的玩家&a…

Maven - 在没有网络的情况下强制使用本地jar包

文章目录 问题解决思路解决办法删除 _remote.repositories 文件代码手动操作步骤验证 问题 非互联网环境,无法从中央仓库or镜像里拉取jar包。 服务器上搭建了一套Nexus私服。 Nexus私服故障,无法连接。 工程里新增了一个Jar的依赖, 本地仓…

Go-知识测试-工作机制

Go-知识测试-工作机制 生成test的maintest的main如何启动case单元测试 runTeststRunnertesting.T.Run 示例测试 runExamplesrunExampleprocessRunResult 性能测试 runBenchmarksrunNtesting.B.Run 在 Go 语言的源码中,go test 命令的实现主要在 src/cmd/go/internal…

南昌高校大学智能制造实验室数字孪生可视化系统平台建设项目验收

南昌高校大学智能制造实验室,作为该地区乃至全国智能制造领域的重要研究和教学基地,一直致力于探索和创新智能制造技术。近日,该实验室的数字孪生可视化系统平台建设项目成功通过了验收,标志着其在数字孪生技术领域取得了重大突破…

【期末速成】计算机操作系统 EP04 | 学习笔记

文章目录 一、前言🚀🚀🚀二、正文:☀️☀️☀️2.1 考点七:进程通信2.2 考点八:线程的概念2.3 考点九:处理机调度的概念及原则2.4 考点十:调度方式与调度算法 一、前言🚀…

【eMTC】eMTC 的SIB1-BR是如何发送

1 概述 eMTC的系统消息发送和接收与LTE的有很大不同,主要原因是在某一个时刻终端只接收1.4M的带宽,无法接收LTE的大带宽,比如20M带宽的LTE小区,eMTC终端,在某一个子帧,只能够接收其中的1.4M 带宽。PBCH本身…

npm常用命令详解与实践

npm(Node Package Manager)是一个JavaScript编程语言的包管理器,它是Node.js的默认包管理工具。npm用于管理项目中的依赖关系,安装、更新和发布包。 以下是一些常用的npm命令及其详解和实践示例: 1. npm init 初始化…

51单片机STC89C52RC——12.1 数据存储芯片AT24C02

目的/效果 利用存储芯片AT24C02存储数据,LCD1602显示存储的数据。 一,STC单片机模块 二,AT24C02存储芯片 2.1 介绍 AT24C02是一个2K位串行CMOS E2PROM,内部含有256个8位字节,采用先进CMOS技术实质上减少了器件的功…

河南企业劳务资质申请:技术负责人角色与职责

河南企业劳务资质申请中,技术负责人的角色与职责至关重要,以下是对其角色与职责的清晰归纳: 一、角色定位 技术核心:技术负责人是企业技术团队的核心,是企业技术实力和专业水平的象征。战略规划者:根据行…

MambaMixer:突破Transformers限制的高效深度学习架构

深度学习模型尤其是Transformers架构,已经在诸如自然语言处理、计算机视觉和时间序列预测等多个领域取得了显著成就。然而,随着模型输入序列长度的增加,传统的Transformers模型面临着显著的扩展性问题。其核心问题在于,Transforme…

阿里云开启ssl证书过程记录 NGINX

🤞作者简介:大家好,我是思无邪,2024 毕业生,某厂 Go 开发工程师.。 🐂我的网站:https://www.yishanicode.top/ ,持续更新,希望对你有帮助。 🐞如果文章或网站…

golang跨平台GUI框架fyne介绍与使用详解,开放案例

golang跨平台GUI框架fyne介绍与使用详解 Fyne 是一个使用 Go 编写的易于使用的 UI 工具包和应用程序 API。 它旨在构建使用单一代码库在桌面和移动设备上运行的应用程序。 通过批量调用身份证实名和三网手机实名和银行卡核验等接口,完成fyne框架的基本使用介绍 主要…

Linux系统编程--进程间通信

目录 1. 介绍 1.1 进程间通信的目的 1.2 进程间通信的分类 2. 管道 2.1 什么是管道 2.2 匿名管道 2.2.1 接口 2.2.2 步骤--以父子进程通信为例 2.2.3 站在文件描述符角度-深度理解 2.2.4 管道代码 2.2.5 读写特征 2.2.6 管道特征 2.3 命名管道 2.3.1 接口 2.3.2…

【方案】基于5G智慧工业园区解决方案(PPT原件)

5G智慧工业园区整体解决方案旨在通过集成5G通信技术、物联网、大数据和云计算等先进技术,实现园区的智能化、高效化和绿色化。 该方案首先构建高速、稳定的5G网络,确保园区内设备、人员与物流的实时连接和高效沟通。其次,通过工业物联网技术&…

【算法】Merge Sort 合并排序

Merge Sort概述 分而治之算法 递归地将问题分解为多个子问题,直到它们变得简单易解 将解决方案组合起来,解决原有问题 O(n*log(n))运行时间 基于比较的算法的最佳运行时间 一般原则 合并排序: 1. 将数…