Java中的时间日期类⭐️通过具体案例分析下开发中常用到的几种时间日期格式类的使用

news2024/12/23 1:59:23

小伙伴们大家好,系统中不少模块都要用到时间日期,来分析总结下项目中用到的些日期类

目录

一、时间日期类

        1.java.util.Calendar:

        2.java.util.Date:

        3.java.time.LocalDate、java.time.LocalTime、java.time.LocalDateTime:

二、代码样例

        2.1 LocalDate测试

        2.2 Instant测试

三、实战使用案例

​编辑

 章末


一、时间日期类

        ​​​​​​​1.java.util.Calendar

Calendar类提供了一个抽象的日历类,可以进行日期和时间的计算、格式化等操作。与Date类相比,Calendar类提供了更多的功能,并且可以处理时区等问题。但是,Calendar类在设计上存在一些缺陷,使用起来较为繁琐,例如:

  • Calendar类的API设计比较复杂,容易出错。
  • Calendar类的实现不是线程安全的,需要进行额外的同步处理。
  • Calendar类的性能比较低,因为它需要进行大量的计算。
        2.java.util.Date

Date类是Java最早引入的日期时间类,用于表示特定的时间点。它的内部实现是一个长整型数值,表示自1970年1月1日00:00:00 GMT以来经过的毫秒数。由于其内部实现的限制,Date类存在一些问题,例如:

  • Date类中的很多方法已经被废弃,不建议使用。
  • Date类不提供时区支持,因此在涉及跨时区的应用中会出现问题。
  • Date类的精度只能到毫秒级别,无法表示更精确的时间戳。
        3.java.time.LocalDatejava.time.LocalTimejava.time.LocalDateTime

LocalDateLocalTimeLocalDateTime是Java 8引入的新的日期时间类。它们分别用于表示日期、时间和日期时间。这些类提供了丰富的方法来进行日期时间的操作和计算,并且处理时区等问题更加方便。与Calendar类相比,java.time包下的日期时间类具有以下优点:

  • 设计简洁,API清晰易懂,使用起来更加方便。
  • 所有的日期时间类都是不可变的,线程安全,可以避免并发问题。
  • 支持时区、夏令时等功能,可以处理跨时区的应用场景。
  • 性能较高,比Calendar类更为快速。

二、代码样例

        2.1 LocalDate测试
public class TimeTest {

    public static void main(String[] args) {
        //获取当前日期
        LocalDate localDate = LocalDate.now();
            //2023-12-21

        //获取日期的年月日
        int year = localDate.getYear();
            //2023
        Month month = localDate.getMonth();
            //DECEMBER
        int dayOfMonth = localDate.getDayOfMonth();
            //21

        //创建指定日期
        LocalDate specialDate = LocalDate.of(2024, 12, 21);
            //2024-12-21
        LocalDateTime specialDateTime = LocalDateTime.of(2023, 12, 21,16,12,30);
            //2023-12-21T16:12:30

        //日期格式化输出
        String formatDate = specialDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
            //2023-12-21

        //日期运算,加七天
        LocalDate localDatePlus = specialDate.plusDays(7);
            //2023-12-28

        //判断日期先后
        boolean isBefore = localDatePlus.isBefore(localDate);
            //false

        //日期间隔
        long daysBetween = ChronoUnit.DAYS.between(localDate, localDatePlus);
            //7
    }
}
        2.2 Instant测试
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset;

public class InstantTimeTest {
    public static void main(String[] args) {
        //获取当前时间戳
        Instant now = Instant.now();
            //2023-12-21T08:24:31.903Z

        //创建指定时间戳
        Instant milli = Instant.ofEpochMilli(1639999999000L);
            //2021-12-20T11:33:19Z

        //时间戳格式化输出
        String s = milli.toString();
            //2021-12-20T11:33:19Z

        //时间戳与日期时间的转换
        LocalDateTime localDateTime = LocalDateTime.ofInstant(milli, ZoneId.systemDefault());
            //2021-12-20T19:33:19
        Instant instant = localDateTime.toInstant(ZoneOffset.UTC);
            //2021-12-20T19:33:19Z

    }
}

三、实战使用案例

        需要计算现在到24年双11之间相隔的天数,并且需要排除周六和周日这两天。

首先,我们可以使用LocalDate类来表示起始日期和结束日期,然后使用循环遍历这两个日期之间的每一天,判断该天是否是周六或周日,如果不是,则将天数加1。

public class SumDays {
    public static void main(String[] args) {
        LocalDate now = LocalDate.of(2023, 12, 21);
        LocalDate end = LocalDate.of(2024, 11, 11);

        int days = 0;
        LocalDate localDate = now;
        while(localDate.isBefore(end) || localDate.isEqual(end)){
            if(localDate.getDayOfWeek() != DayOfWeek.SATURDAY && localDate.getDayOfWeek() != DayOfWeek.SUNDAY){
                days ++;
            }
            localDate = localDate.plusDays(1);
        }
        System.out.println("现在的日期是:"+now+ "  到2024年双11相隔天数(不包括周六周日):"+days);

    }
}

 章末

        文章到这里就结束了 


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

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

相关文章

Ubuntu 常用命令之 netstat 命令用法介绍

📑Linux/Ubuntu 常用命令归类整理 netstat 是一个非常有用的命令行工具,它可以帮助我们监控和诊断网络问题。在 Ubuntu 系统中,我们可以使用 netstat 命令来查看网络连接、路由表、接口统计等信息。 netstat 命令的参数有很多,以…

anaconda 安装 使用 pytorch onnx onnxruntime

一:安装 如果不是 x86_64,需要去镜像看对应的版本 安装 Anaconda 输入命令 bash Anaconda3-2021.11-Linux-x86_64.sh 然后输入 yes 表示同意 确认安装的路径,一般直接回车安装在默认的 /home/你的名字/anaconda3 很快就安装完毕。输入 yes…

【Vue中给输入框加入js验证_blur失去焦点进行校验】

【Vue中给输入框加入js验证_blur失去焦点进行校验】 通俗一点就是给输入框加个光标离开当前文本输入框时&#xff0c;然后对当前文本框内容进行校验判断 具体如下&#xff1a; 1.先给文本框加属性 blur“validatePhoneNumber” <el-input v-model“entity.telephone” blur…

航空港务数据大屏为航空港的可持续发展提供有力支撑!

随着经济的发展&#xff0c;不断加建与扩建民用机场&#xff0c;空港行业规模不断扩大。在不断引进和消化发达国家先进技术的同时&#xff0c;中国深入开展了对新技术和新材料的研究&#xff0c;极大地丰富和发展了中国的机场建设技术。且各项机场建设计划均已落实推进&#xf…

下午好~ 我的论文【yolov5】(第四期)

文章目录 简介模型Mosaic数据增强自适应锚框计算自适应图片缩放Focus结构CSP结构 NeckCIOU_Lossnms非极大值抑制代码最后 简介 YOLO V4没过多久YOLO V5就出来了。YOLO V5的模型架构是与V4非常相近的。 模型 Yolov5官方代码中&#xff0c;给出的目标检测网络中一共有4个版本&…

列举mfc140u.dll丢失的解决方法,常见的mfc140u.dll问题

在使用电脑的过程中&#xff0c;有时会遇到mfc140u.dll文件丢失的问题&#xff0c;导致一些应用程序无法正常启动。本文将介绍mfc140u.dll丢失的常见原因&#xff0c;并提供相应的解决办法。同时&#xff0c;还会列举一些与mfc140u.dll丢失相关的常见问题和解答。 第一部分&…

基于FPGA的简易BPSK和QPSK

1、框图 2、顶层 3、m_generator M序列的生成&#xff0c;输出速率为500Kbps 4、S2P是串并转换模块 将1bit的m序列转换到50M时钟下的2bit M序列数据&#xff08;就有4个象限&#xff09;&#xff1b; 5、my_pll是生成256M的时钟作为载波&#xff0c;因为sin和cos信号的…

数据管理平台Splunk Enterprise本地部署结合内网穿透实现远程访问

文章目录 前言1. 搭建Splunk Enterprise2. windows 安装 cpolar3. 创建Splunk Enterprise公网访问地址4. 远程访问Splunk Enterprise服务5. 固定远程地址 前言 Splunk Enterprise是一个强大的机器数据管理平台&#xff0c;可帮助客户分析和搜索数据&#xff0c;以及可视化数据…

汽车大灯led恒流驱动芯片OC5501 可高低亮调光

LED恒流驱动芯片是一种在汽车大灯中常见的关键部件。它能提供稳定的电流&#xff0c;使LED灯光亮度均匀、稳定&#xff0c;并且延长LED的寿命。 传统的汽车大灯使用的是卤素灯泡&#xff0c;而现在越来越多的汽车厂商开始使用LED大灯。LED大灯具有更好的能效和更长的寿命&…

08 Vue3中的v-text指令

概述 v-text指令主要是用来渲染文本内容&#xff0c;和双大括号的效果基本一致&#xff0c;所以使用场景非常少。 一般情况下&#xff0c;我们都会使用双大括号语法去渲染文本内容&#xff0c;而不是使用v-text指令。 基本用法 我们创建src/components/Demo08.vue&#xff…

【超图】SuperMap iClient3D for WebGL/WebGPU ——颜色(1)

作者&#xff1a;taco 在项目中通常会出现&#xff0c;高亮对象。给对象设置颜色的一些问题。那么针对颜色设置在超图的 iClient3D for WebGl/WebGPU 中又提供了哪些方式呢&#xff1f;本篇文章将介绍一些颜色的设置方法。以及一些颜色的参数设置。 在iClient3D for WebGl/WebG…

ChimeraX使用教程-安装及基本操作

ChimeraX使用教程-安装及基本操作 1、访问https://www.cgl.ucsf.edu/chimerax/download.html进行下载&#xff0c;然后安装 安装完成后&#xff0c;显示界面 2、基本操作 1、点击file&#xff0c;导入 .PDB 文件。 &#xff08;注&#xff1a;在 alphafold在线预测蛋白》点…

比特币和区块链并非游离在法律之外

​​发表时间&#xff1a;2023年12月01日 近年来&#xff0c;围绕区块链监管的讨论&#xff0c;已经成为政策制定者、行业领袖和区块链爱好者之间越来越重要的话题。随着各国政府在促进创新和确保消费者保护之间寻求着平衡&#xff0c;有关区块链监管的持续讨论反映出这项变革性…

Ansible的脚本---Playbook剧本编写

playbook的组成部分 1、 tasks&#xff1a;任务 在目标主机上需要执行的操作。使用模块定义这些操作。每个任务都是一个模块的调用。 2、 variables&#xff1a;变量 用于存储和传递数据。类似于shell脚本中的变量。变量可以自定义。可以在playbook当中定义为全局变量&…

计算机网络3

1.三种通信方式 2.失真 &#xff08;码间串扰&#xff1a;码元传输速率过快导致&#xff09; 3.奈氏准则 4.香农定理 5.基带and宽带信号 6.编码与调制 ​​​​​​​7.数据交换方式 1.电路交换及优缺点 2.报文交换及优缺点 3.分组交换及优缺点 8.数据交换方式的选择和特点…

智能图像编辑软件Luminar Neo mac提供多种调整和滤镜选项

Luminar Neo mac是一款由Skylum公司开发的AI技术图像编辑软件&#xff0c;旨在为摄影师和视觉艺术家提供创意图像编辑解决方案。Luminar Neo拥有强大的AI技术和丰富的后期处理工具&#xff0c;可帮助用户快速轻松地实现从基本到高级的图像编辑需求。 Luminar Neo提供了多种调整…

电商行业的生存环境如何,比较占优势的发展模式有哪些?

我是电商珠珠 随着互联网技术的发展和普及&#xff0c;电商行业已经成为了当今社会不可或缺的一部分。在改变人们生活娱乐习惯的同时&#xff0c;还带动了整个产业链的变革。 据统计&#xff0c;全球电商交易额已经达到了数万亿美元&#xff0c;且仍在快速增长。 在电商行业…

【lesson20】MySQL复合查询(1)基本查询回顾、多表查询和自连接

文章目录 基本查询回顾建表插入数据实例 多表查询建表插入数据实例 自连接建表插入数据实例 基本查询回顾 建表 插入数据 实例 查询工资高于500或岗位为MANAGER的雇员&#xff0c;同时还要满足他们的姓名首字母为大写的J 按照部门号升序而雇员的工资降序排序 使用年薪进行降…

无约束优化问题求解笔记(2):最速下降法

目录 3. 最速下降法3.1 最速下降法的基本思想3.2 基于精确搜索的最速下降法3.3 基于精确搜索的最速下降法的程序实现3.4 基于精确搜索的最速下降法的缺点 Reference 3. 最速下降法 3.1 最速下降法的基本思想 最速下降法是典型的线搜索方法. 设 f f f 是 R n \mathbb{R}^n R…

操作系统大会2023 | 麒麟信安根植openEuler社区,全场景·同生态·共未来

12月15-16日&#xff0c;以“崛起数字时代 引领数智未来”为主题的操作系统大会 &openEuler Summit 2023在北京举行。产业组织、开放原子开源基金会、学术领袖、行业用户、生态伙伴以及开发者等&#xff0c;共同探讨操作系统产业发展方向和未来机遇&#xff0c;展示最新合作…