JDK7时间相关类超详细总结(含多个实例)

news2025/1/17 21:33:53

JDK7时间相关类

  • 一、概述
  • 二、Date类
    • 1.构造函数
    • 2.常用函数
      • 1️⃣格式
      • 2️⃣实例
  • 三、 SimpleDateFormat类
    • 1.概述
    • 2.构造方法
    • 3.常用方法
      • 1️⃣格式
      • 2️⃣实例
  • 四、Calendar类
    • 1.概述
    • 2.使用方法
    • 3.常用方法
    • 4.实例
  • 五、结语

一、概述

本文主要介绍JDK7中的时间相关类

二、Date类

1.构造函数

  • public Date():从运行程序的此时此刻到时间原点经历的毫秒值,转换成Date对象,分配Date对象并初始化此对象,以表示分配它的时间(精确到毫秒)。
  • public Date(long date):将指定参数的毫秒值date,转换成Date对象,分配Date对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即1970年1月1日00:00:00 GMT)以来的指定毫秒数。

2.常用函数

1️⃣格式

  • public long getTime() 把日期对象转换成对应的时间毫秒值。
  • public void setTime(long time) 把方法参数给定的毫秒值设置给日期对象

2️⃣实例

public class DateDemo02 {
    public static void main(String[] args) {
        //创建日期对象
        Date d = new Date();
        
        long time = System.currentTimeMillis();
        d.setTime(time);

        System.out.println(d);
    }
}

Thu Jan 12 21:58:42 CST 2023

三、 SimpleDateFormat类

1.概述

java.text.SimpleDateFormat 是日期/时间格式化类,我们通过这个类可以帮我们完成日期和文本之间的转换,也就是可以在Date对象与String对象之间进行来回转换

2.构造方法

由于DateFormat为抽象类,不能直接使用,所以需要常用的子类java.text.SimpleDateFormat。这个类需要一个模式(格式)来指定格式化或解析的标准。构造方法为:

  • public SimpleDateFormat(String pattern):用给定的模式和默认语言环境的日期格式符号构造SimpleDateFormat。参数pattern是一个字符串,代表日期时间的自定义格式。

3.常用方法

1️⃣格式

  • public String format(Date date):将Date对象格式化为字符串

  • public Date parse(String source):将字符串解析为Date对象

2️⃣实例

  package com.itheima.a01jdk7datedemo;
  
  import java.text.ParseException;
  import java.text.SimpleDateFormat;
  import java.util.Date;
  
public class Demo3 {
    public static void main(String[] args) throws ParseException {

        String str = "2023-11-11 11:11:11";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = sdf.parse(str);
        System.out.println(date.getTime());
    }
}

1699672271000

import java.text.SimpleDateFormat;
        import java.util.Date;

public class Demo4 {
    public static void main(String[] args) {
        SimpleDateFormat sdf1 = new SimpleDateFormat();
        Date d1 = new Date(0L);
        String str1 = sdf1.format(d1);
        System.out.println(str1);//1970/1/1 上午8:00

        //2.利用带参构造创建simpleDateFormat对象,指定格式
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss");
        String str2 = sdf2.format(d1);
        System.out.println(str2);//1970年01月01日 08:00:00
    }
}

四、Calendar类

1.概述

java.util.Calendar类表示一个“日历类”,可以进行日期运算。它是一个抽象类,不能创建对象,我们可以使用它的子类:java.util.GregorianCalendar类

在这里插入图片描述

2.使用方法

有两种方式可以获取GregorianCalendar对象

  • 直接创建GregorianCalendar对象

  • 通过Calendar的静态方法getInstance()方法获取GregorianCalendar对象

3.常用方法

方法名说明
public static Calendar getInstance()获取一个它的子类GregorianCalendar对象。
public int get(int field)获取某个字段的值。field参数表示获取哪个字段的值,
可以使用Calender中定义的常量来表示:
Calendar.YEAR : 年
Calendar.MONTH :月
Calendar.DAY_OF_MONTH:月中的日期
Calendar.HOUR:小时
Calendar.MINUTE:分钟
Calendar.SECOND:秒
Calendar.DAY_OF_WEEK:星期
public void set(int field,int value)设置某个字段的值
public void add(int field,int amount)为某个字段增加/减少指定的值

4.实例

get方法

import java.util.Calendar;

public class Demo5 {
    public static void main(String[] args) {
        //1.获取一个GregorianCalendar对象
        Calendar instance = Calendar.getInstance();//获取子类对象

        //2.打印子类对象
        System.out.println(instance);

        //3.获取属性
        int year = instance.get(Calendar.YEAR);
        int month = instance.get(Calendar.MONTH) + 1;//Calendar的月份值是0-11
        int day = instance.get(Calendar.DAY_OF_MONTH);

        int hour = instance.get(Calendar.HOUR);
        int minute = instance.get(Calendar.MINUTE);
        int second = instance.get(Calendar.SECOND);

        int week = instance.get(Calendar.DAY_OF_WEEK);

        System.out.println(year + "年" + month + "月" + day + "日" + hour + ":" + minute + ":" + second);

        System.out.println(getWeek(week));
        

    }

    private static String getWeek(int week) {
        String[] weekArray = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
        
        return weekArray[week - 1];
    }

java.util.GregorianCalendar[time=1673534238973,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id=“Asia/Shanghai”,offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2023,MONTH=0,WEEK_OF_YEAR=2,WEEK_OF_MONTH=2,DAY_OF_MONTH=12,DAY_OF_YEAR=12,DAY_OF_WEEK=5,DAY_OF_WEEK_IN_MONTH=2,AM_PM=1,HOUR=10,HOUR_OF_DAY=22,MINUTE=37,SECOND=18,MILLISECOND=973,ZONE_OFFSET=28800000,DST_OFFSET=0]
2023年1月12日10:37:18
星期四

set方法

import java.util.Calendar;

public class Demo6 {
    public static void main(String[] args) {
        //设置属性——set(int field,int value):
        Calendar c1 = Calendar.getInstance();//获取当前日期


        c1.set(Calendar.YEAR, 2002);
        c1.set(Calendar.MONTH, 10 - 1);//转换为Calendar内部的月份值
        c1.set(Calendar.DAY_OF_MONTH, 24);

        int w = c1.get(Calendar.DAY_OF_WEEK);
        System.out.println("我出生那天是:" + getWeek(w));
        
    }
    
    //查表法,查询星期几
    public static String getWeek(int week) {//w = 1 --- 7
        String[] weekArray = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
        //查表
        return weekArray[week - 1];
    }
}

我出生那天是:星期四

add方法

import java.util.Calendar;

public class Demo7 {
    public static void main(String[] args) {
        //计算31天以后是哪年哪月哪日,星期几?
        Calendar c2 = Calendar.getInstance();//获取当前日期
        int y1 = c2.get(Calendar.YEAR);
        int m1 = c2.get(Calendar.MONTH) + 1;//转换为实际的月份
        int d1 = c2.get(Calendar.DAY_OF_MONTH);
        int wk1 = c2.get(Calendar.DAY_OF_WEEK);
        System.out.println("今天是:" + y1 + "年" + m1 + "月" + d1 + "日" + getWeek(wk1));
        
        c2.add(Calendar.DAY_OF_MONTH, 31);//日期加31

        int y = c2.get(Calendar.YEAR);
        int m = c2.get(Calendar.MONTH) + 1;//转换为实际的月份
        int d = c2.get(Calendar.DAY_OF_MONTH);

        int wk = c2.get(Calendar.DAY_OF_WEEK);
        System.out.println("31天后是:" + y + "年" + m + "月" + d + "日" + getWeek(wk));

    }
    //查表法,查询星期几
    public static String getWeek(int week) {//w = 1 --- 7
        //做一个表(数组)
        String[] weekArray = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
        //查表
        return weekArray[week - 1];
    }
}

今天是:2023年1月12日星期四
31天后是:2023年2月12日星期日

五、结语

接下来将讲述JDK8时间相关类

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

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

相关文章

JSP SSM评估文档管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 JSPSSM评估文档管理系统 是一套完善的系统源码,对理解JSP java SrpingMVC mybiats 框架 MVC编程开发语言有帮助,系统具有完整的源代码和数据库,以及相应配套的设计文档 ,系统主要采用B/S模式开发。 研究的基本…

从零备战蓝桥杯——动态规划(子序列篇)

文章目录啥也别说了直接进入正题:不连续子序列问题300. 最长递增子序列1143. 最长公共子序列1035. 不相交的线连续子序列问题674. 最长连续递增序列718. 最长重复子数组53. 最大子数组和编辑距离问题392. 判断子序列困难题:115. 不同的子序列583. 两个字…

使用 ORM 方式查询 Mongodb 里的数据,再也不用记 Mongodb 的语法(ORM Bee)

使用ORM方式查询Mongodb里的数据,再也不用记Mongodb的语法(ORM Bee) Mongodb的语法可读性差,要写复杂查询,要求技术能力高;Java驱动,还要使用另一种语法;学习成本太高了。 可以使用ORM方式,轻松…

数字IC设计、验证、FPGA笔试必会 - Verilog经典习题 (四)移位运算与乘法

数字IC设计、验证、FPGA笔试必会 - Verilog经典习题 (四)移位运算与乘法 🔈声明: 😃博主主页:王_嘻嘻的CSDN博客 🧨未经作者允许,禁止转载 🔑系列专栏:牛客Ve…

C++:函数对象:Lambda:Lambda详解(三)

1:定义 lambda表达式就是一个函数(匿名函数),也就是一个没有函数名的函数。为什么不需要函数名了? 因为我们直接(一次性的)用它,不需要其他地方调用它。lambda表达式也叫闭包&#x…

K8s部署前后端分离项目(二)

K8s容器部署两个项目(主节点操作) 1、创建yaml文件 master节点上创建todo-list.yaml文件,两个jar包设置了两个副本,vue设置了一个副本,端口号固定配置。 当前文件目录为:/home/docker 创建yaml文件命令为&…

数学建模----图与网络模型

目录 一.图的基本概念与数据结构 1.基本概念 2.图与网络的数据结构 1.邻接矩阵表示法 2.关联矩阵 3.Matlab工具箱简介 1.图的生成 4.问题讨论 1.最短路问题 2.最小生成树问题 一.图的基本概念与数据结构 1.基本概念 点对应于研究对象,根据关系将一些点对应相…

第14章 多数据库支持之MySql

对于一个工程性程序而言,是否支持对多数据库的CURD操作,不是必须的,只是为了预防程序部署和运行过程中如果因为版权问题而产生的额外成本而预留的退路。对于移动设备的前后端分离程序而言,如果数据库需要部署到移动设备中&#xf…

【UE4 第一人称射击游戏】42-消耗和重新装载“M4A1”弹药

上一篇:【UE4 第一人称射击游戏】41-让“M4A1”拥有独立的弹药系统本篇效果:可以看到当玩家拾取了“M4A1”后,实现了重新装弹的功能,与“AK47”的弹药系统是相互独立的。步骤:打开“ThirdPersonCharacter”&#xff0c…

PHP session反序列化漏洞原理解析

什么是session 官方Session定义:在计算机中,尤其是在网络应用中,称为“会话控制”。Session对象存储特定用户会话所需的属性及配置信息。主要有以下特点: session保存的位置是在服务器端 session通常是要配合cookie使用 因为HTTP…

Docker Swarm NFS 数据持久化存储

目录一、Swarm 集群部署二、NFS 服务部署三、Swarm 使用 NFS3.1 通过 Volume3.1.1 创建 Volume3.1.2 使用 Volume3.1.3 验证数据共享特性3.2 通过 Docker Stack3.2.1 创建 YAML 文件3.2.2 使用 YAML 文件3.2.3 验证数据共享特性一、Swarm 集群部署 可参考我前面的博客《基于 L…

从数据到价值,DataOps精益数据运营概述

作者:陈荣耀 阿里云全球技术服务团队 一、背景&挑战 数字化时代,企业希望借助数字化的技术能力来提升企业的经营能力,从最终业务目标上来看,一般分三类: 1. 增加收入:基于经营数据的智能分析来提升产…

24、TORCH.UTILS.DATA

PyTorch 数据加载实用程序的核心是 torch.utils.data.DataLoader 类。它代表一个可在数据集上迭代的 Python,支持map-style and iterable-style datasets,customizing data loading order,automatic batching,single- and multi-process data loading,automatic mem…

CTK Plugin Framework插件框架学习--服务追踪

文章目录一、前言二、新建插件PluginA三、新建插件PluginB四、测试一、前言 服务追踪:如果想在B插件里使用A服务,可以专门写一个类继承ctkServiceTracker,在这个类里完成对A服务的底层操作,然后在B插件里通过这个类提供的接口来使…

重庆市市长胡衡华会见深兰科技董事长陈海波一行

1月9日,重庆市市长胡衡华会见了赴渝考察调研的深兰科技集团创始人、董事长陈海波一行,双方就开展互利合作进行了深入交流。胡衡华市长会见深兰科技考察团重庆市委常委、副市长陈鸣波,市政府秘书长、办公厅主任欧顺清,市政府副秘书…

ResT: An Efficient Transformer for Visual Recognition

文章地址: https://arxiv.org/pdf/2105.13677.pdf codeResT: An Efficient Transformer for Visual Recognition一、引言二、ResT一、Transformer模块的再思考二、Efficient Transformer Block三、Patch Embedding四、Positional Encoding五、整体架构三、实验一、分类二、目标…

go import package 入门lib1 is not in GOROOT

main.go:4:2: package lib1 is not in GOROOT (/usr/local/go/src/lib1)├── 5-init│ ├── lib1│ │ └── lib1.go│ └── lib2│ └── lib2.go├── const.go├── firstVar.go├── go.mod├── helloGolang.go├── main.go└── test3function.gogo env …

Java学习之单例设计模式

目录 设计模式 单例模式 一、饿汉式 二、懒汉式 三、饿汉式VS懒汉式 总结 设计模式 1.静态方法和属性的经典使用 2.设计模式是在大量的实践中总结和理论化之后优选的代码结构、编程风格以及解决问题的思考方式。就像是经典的棋谱,不同的棋局,我们用…

连接查询之外连接(左外链接和右外连接)

内连接: 假设A表和B表进行连接查询,使用内连接的话,凡是A表和B表能够匹配上的记录被查询出来,这就是内连接。A、B两张表没有主副之分,两张表是平等的。 外连接: 假设A表和B表进行连接查询,使用…

对于html中div标签height属性的个人理解

对于没有系统学习过css的程序员来说,在编写css样式的时候,div的height属性值确实是个玄学的东西,我也感觉css确实挺玄学的,本文将介绍我对div标签height属性的个人理解,如有问题请指正。 在html中,div标签属…