【JAVA语言-第12话】API中的工具类 之 Date,DateFormat,SimpleDateFormat,Calendar类的详细解析

这篇具有很好参考价值的文章主要介绍了【JAVA语言-第12话】API中的工具类 之 Date,DateFormat,SimpleDateFormat,Calendar类的详细解析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

日期和时间

1.1 Date类

1.1.1 概述

1.1.2 常用方法 

1.1.3 案例

1.2 DateFormat类 

1.2.1 概述

1.2.2 常用方法

1.3 SimpleDateFormat类

1.3.1 概述

1.3.2 构造方法

1.3.3 模式字符 

1.3.4 日期转字符串

1.3.5 字符串转日期

1.4 Calendar类

1.4.1 概述

1.4.2 静态方法

1.4.3 常用成员方法

1.4.4 成员方法中参数field的常用取值

1.4.5 练习


日期和时间

1.1 Date类

1.1.1 概述

        java.util.Date类:表示特定的瞬间,精确到毫秒(千分之一秒),1000毫秒=1秒。毫秒值的作用,可以对时间和日期进行计算,先把日期转换为毫秒进行计算,计算完毕,再把毫秒转换为日期。

1.1.2 常用方法 

构造方法:

        Date():获取的就是当前系统的日期和时间。不格式化的情况显示格式是中国标准时间。

        Date(Long date):传递毫秒值,把毫秒转换为Date日期。

        

成员方法:

        Long getTime():把日期转换为毫秒值(相当于System.currentTimeMillis()),就是计算当前日期到时间原点之间一共经历了多少毫秒。

        

注:

        1.时间原点(0毫秒):1970年1月1日00:00:00。

        2.中国是属于东八区,会把时间增加8个小时,时间原点为:1970年1月1日08:00:00。

        3.一天 = 24 * 60 * 60 = 86400秒 = 86400 * 1000 = 86400000毫秒

1.1.3 案例

要求:获取当前日期,将当前日期转换成毫秒值,并将毫秒值在转换成日期。 

 源代码:

package com.zhy.util;

import java.util.Date;

public class TestDate {
    public static void main(String[] args) {
        Date date = new Date();
        System.out.println("获取当前日期和时间:" + date);
        
        Long missValue = date.getTime();
        System.out.println("日期 转换成 毫秒值:" + missValue);

        Date date2 = new Date(missValue);
        System.out.println("毫秒值 转换成 日期:" + date2);
    }
}

输出结果:

【JAVA语言-第12话】API中的工具类 之 Date,DateFormat,SimpleDateFormat,Calendar类的详细解析,JAVA语言,java,开发语言

1.2 DateFormat类 

1.2.1 概述

        java.text.DateFormat类:是日期/时间格式化子类的抽象类,我们通过这个类可以帮我们完成日期(Date对象)和文本(String对象)之间的转换,格式化(也就是日期转换为文本),解析(文本转换为日期)。

1.2.2 常用方法

         DateFormat类是一个抽象类,无法直接创建对象使用,可以使用DateFormat的子类(java.text.SimpleDateFormat),常用的方法如下。

String format(Date date):按照指定的模式,把Date日期,格式化为符合模式的字符串。

Date parse(String source):把符合模式的字符串,解析为Date日期。

1.3 SimpleDateFormat类

1.3.1 概述

        SimpleDateFormat是一个用于格式化和解析日期的类。它提供了一种简单而灵活的方式来将日期转换为特定格式的字符串,或将字符串解析为日期对象。

1.3.2 构造方法

格式:
        SimpleDateFormat(String pattern);

说明:用给定的模式和默认语言环境的日期格式符号构造SimpleDateFormat。

        参数pattern:传递指定的模式。

1.3.3 模式字符 

        SimpleDateFormat使用一系列模式字符来定义日期格式,这些模式字符可以代表年、月、日、小时、分钟、秒等各个部分的值。通过在SimpleDateFormat的构造函数中传入指定的日期格式模式,我们可以创建一个可以格式化和解析指定日期格式的SimpleDateFormat对象。

模式 说明
y
M
d
H
m
s
S 毫秒

模式:区分大小写的,字母不可更改,连接模式的符号可以改变。 

1.3.4 日期转字符串

        使用SimpleDateFormat类的format()成员方法实现。

格式:

        String format(Date date):把日期格式化为文本(按照指定的模式,把Date日期,格式化为符合模式的字符串)。

源代码:

package com.zhy.util;

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

public class TestSimpleDateFormat {
    public static void main(String[] args){
        //1.创建SimpleDateFormat对象,构造函数中传递指定的模式。
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy/MM/dd");

        //2.调用SimpleDateFormat对象中的format方法,按照构造方法中指定的模式,把Date日期格式化为符合模式的字符串文本。
        Date date = new Date();
        System.out.println("没有格式化的日期:" + date);

        String dateS = sdf.format(date);
        System.out.println("使用模式 yyyy-MM-dd HH:mm:ss SSS 格式化日期:" + dateS);

        String dateS2 = sdf2.format(date);
        System.out.println("使用模式 yyyy/MM/dd 格式化日期:" + dateS2);
    }
}

输出结果:

【JAVA语言-第12话】API中的工具类 之 Date,DateFormat,SimpleDateFormat,Calendar类的详细解析,JAVA语言,java,开发语言

1.3.5 字符串转日期

         使用SimpleDateFormat类的parse()成员方法实现。

格式:

        Date parse(String source):把文本解析为日期(把符合模式的字符串,解析为Date日期)。

        

注意事项:

        parse方法声明了一个异常,叫做ParseException(解析异常),如果字符串和构造方法中的模式不一样,那么程序就会抛出此异常,也就是编译报错,必须要处理,要么throws继续声明抛出这个异常,要么try…catch自己处理这个异常。

源代码:

package com.zhy.util;

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

public class TestSimpleDateFormat {
    public static void main(String[] args) throws ParseException {
        //1.创建SimpleDateFormat对象,构造函数中传递指定的模式。
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy/MM/dd");

        //2.调用SimpleDateFormat对象中的parse方法,把符合构造方法中模式的字符串,解析为Date日期。
        Date date = sdf.parse("2024-01-08 11:45:08");
        System.out.println(date);

        Date date2 = sdf2.parse("2024/01/08");
        System.out.println(date2);
    }
}

输出结果:

【JAVA语言-第12话】API中的工具类 之 Date,DateFormat,SimpleDateFormat,Calendar类的详细解析,JAVA语言,java,开发语言

1.4 Calendar类

1.4.1 概述

        java.util.Calendar类:日历类,Calendar类是一个抽象类,里面提供了很多操作日历字段的方法(YEAR、MONTH、DAY_of_MONTH、HOUR),Calendar类无法直接创建对象使用,里面有一个静态方法叫getInstance(),该方法返回了Calendar类的子类对象。

1.4.2 静态方法

public static Calendar getInstance():使用默认时区和语言环境获得一个日历。

        //获取日历
        Calendar c = Calendar.getInstance();

1.4.3 常用成员方法

public Date getTime():返回一个Date对象,表示此日历的时间值,默认当前日期。 

public Date setTime(Date date):将此日历的时间设置为给定日期(date)。

package com.zhy.util;

import java.util.Calendar;
import java.util.Date;

public class CalendarTest {
    public static void main(String[] args) {
        //日历
        Calendar c = Calendar.getInstance();
        //第一次获取日历日期,默认当前日期
        Date now = c.getTime();
        //设置 当前日历时间 为 当前日期
        c.setTime(now);
    }
}

public void add(int field, int amount):根据日历的规则,在给定的日历字段中添加或减去指定的时间量。

package com.zhy.util;

import java.util.Calendar;
import java.util.Date;

public class CalendarTest {
    public static void main(String[] args) {;
        //日历
        Calendar c = Calendar.getInstance();
        //第一次获取日历日期,默认当前日期
        Date now = c.getTime();

        //将 日历的当前时间 设置成当前日期
        c.setTime(now);

        //1.从日历的当前时间,减去1年
        c.add(Calendar.YEAR, -1);

        c.setTime(now);
        //2.从日历的当前时间,加上2个月
        c.add(Calendar.MONTH, 2);

        c.setTime(now);
        //3.从日历的当前时间,减去10天
        c.add(Calendar.DAY_OF_MONTH,-10);
    }
}

public int get(int field):返回给定 日历字段(field) 的值。
public void set(int field,int value):将给定的 日历字段(field) 设置为 给定值(value)。

public void set(int year, int month, int date):年月日。

public void set(int year, int month, int date, int hourOfDay, int minute):年月日时分。

public void set(int year, int month, int date, int hourOfDay, int minute,int second):年月日时分秒。

package com.zhy.util;

import java.util.Calendar;

public class CalendarTest {
    public static void main(String[] args) {
        //日历
        Calendar c = Calendar.getInstance();

        //1.设置 日历当前日期 的年份
        c.set(Calendar.YEAR,2025);

        //2.设置 日历当前日期 的年月日
        c.set(2026,Calendar.MAY,19);

        //3.设置 日历当前日期 的年月日时分
        c.set(2027,Calendar.MAY,19,12,30);

        //4.设置 日历当前日期 的年月日时分秒
        c.set(2028,Calendar.MAY,19,12,30,59);

        //5.获取 日历当前日期 的年份
        int year = c.get(Calendar.YEAR);
        System.out.println(year);

        //6.获取 日历当前日期 的月份,取值:0-11(1月-12月)
        int month = c.get(Calendar.MONTH);//month = 4,表示5月份
    }
}

public int getFirstDayOfWeek():获取一周的第一天,默认值=1(星期日)。

public void setFirstDayOfWeek(int value):设置一周的第一天。

package com.zhy.util;

import java.util.Calendar;

public class CalendarTest {
    public static void main(String[] args) {
        //日历
        Calendar c = Calendar.getInstance();

        //1.获取一周的第一天,默认 值 = 1(星期日)
        int firstDay= c.getFirstDayOfWeek();
        //2.设置一周的第一天为周一
        c.setFirstDayOfWeek(Calendar.MONDAY);
        //3.再次获取,此时 值 = 2(星期一)
        firstDay= c.getFirstDayOfWeek();
    }
}

1.4.4 成员方法中参数field的常用取值

Calendar.ERA:纪元,取值:只能为0(代表公元前)或1(代表公元)
Calendar.YEAR:年
Calendar.MONTH:月
Calendar.DATE:一个月中的第几天,等同于Calendar.DAY_OF_MONTH
Calendar.HOUR:12小时制下的小时数,中午和午夜表示为0
Calendar.HOUR_OF_DAY:24小时制下的小时数,午夜表示为0
Calendar.MINUTE:分
Calendar.SECOND:秒
Calendar.MILLISECOND:毫秒
Calendar.AM_PM=0:时间是在中午之前还是之后,取值0(中午前)和1(中午后)

        

Calendar.DAY_OF_MONTH:一年中的第几天(判断当前日期是几月份),取值0-11(1月份-12月份)
    一月:Calendar.JANUARY = 0
    二月:Calendar.FEBRUARY = 1
    三月:Calendar.MARCH = 2
    四月:Calendar.APRIL = 3
    五月:Calendar.MAY = 4
    六月:Calendar.JUNE = 5
    七月:Calendar.JULY = 6
    八月:Calendar.AUGUST = 7
    九月:Calendar.SEPTEMBER = 8
    十月:Calendar.OCTOBER = 9
    十一月:Calendar.NOVEMBER = 10
    十二月:Calendar.DECEMBER = 11
Calendar.DAY_OF_MONTH:一个月中的第几天(判断当前日期是几号)
Calendar.DAY_OF_WEEK_IN_MONTH:这一天所对应的星期几在该月中是第几次出现(判断当前日期是这个月的第几个星期几)
Calendar.DAY_OF_WEEK:一周中的第几天(判断当前日期是周几),取值1-7(周日-周六)
    星期日:Calendar.SUNDAY=1
    星期一:Calendar.MONDAY=2
    星期二:Calendar.TUESDAY=3
    星期三:Calendar.WEDNESDAY=4
    星期四:Calendar.THURSDAY=5
    星期五:Calendar.FRIDAY=6
    星期六:Calendar.SATURDAY=7

        

Calendar.WEEK_OF_YEAR:一年中的第几个星期
Calendar.WEEK_OF_MONTH:一个月中的第几个星期

        

Calendar.firstDayOfWeek:一周中的第一天,默认1(星期日)

1.4.5 练习

源代码: 

package com.zhy.util;

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

public class CalendarTest {
    public static void main(String[] args) throws ParseException {
        //日期格式化
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

        //获取日历
        Calendar c = Calendar.getInstance();
        
        //一、获取当前日期
        Date now = c.getTime();
        System.out.println("当前日期:" + sdf.format(c.getTime()));
        System.out.println("=============================================");

        //二、获取本周周五的日期
        //1.设置 日历当前时间 为当前日期
        c.setTime(now);
        //2.设置当当前日历每周的第一天为周一,则:c.getFirstDayOfWeek()=2
        c.setFirstDayOfWeek(Calendar.MONDAY);
        //3.在 当前日期 的基础上,根据公式推算 当前日期 距离周五 的天数,进行日期偏移。
        //  c.get(Calendar.DAY_OF_WEEK):由于周日=1,为了符合数字和星期对应,每一天都要-1;
        //  例如:周一的c.get(Calendar.DAY_OF_WEEK)=2,减一之后c.get(Calendar.DAY_OF_WEEK)=1,后面以此类推
        c.add(Calendar.DATE, (c.getFirstDayOfWeek() - (c.get(Calendar.DAY_OF_WEEK) - 1) + 3));
        //4.格式化日期
        System.out.println("本周周五是:" + sdf.format(c.getTime()));
        System.out.println("=============================================");

        //三、获取一年三月个后的倒数第五天的日期
        //1.设置日历为当前日期
        c.setTime(now);
        //2.在当前日期的基础上加上1年4个月
        c.add(Calendar.YEAR,1);
        c.add(Calendar.MONTH,4);
        //3.往前倒数5天,0:倒数一天,-4:倒数5天
        c.set(Calendar.DAY_OF_MONTH,-4);
        //4.格式化日期
        System.out.println("一年三个月后的倒数第五天是:" + sdf.format(c.getTime()));
    }
}

输出结果:

【JAVA语言-第12话】API中的工具类 之 Date,DateFormat,SimpleDateFormat,Calendar类的详细解析,JAVA语言,java,开发语言文章来源地址https://www.toymoban.com/news/detail-787718.html

到了这里,关于【JAVA语言-第12话】API中的工具类 之 Date,DateFormat,SimpleDateFormat,Calendar类的详细解析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SimpleDateFormat :{ ParseException: Unparseable date} 问题原因以及解决方法

    SimpleDateFormat simpleFormat = new SimpleDateFormat(“yyyy-MM-dd hh:mm:ss”); 我所使用的与实际要转换的不一致,导致报错 在转换的时候必须保持 转换字符串和转换类型格式一致 提供一个代码片段(只是简单做了一下判断,只能满足几种日期转换( 写的不是很好,有待优化 )) 参考此篇

    2024年02月14日
    浏览(27)
  • Java8 时间处理API(Date Time API)详解

    在Java8之前,我们通常使用 java.util.Date 和 java.util.Calendar 类来处理日期和时间相关的操作,例如: 这种方式虽然可以实现功能,但是有一些缺点: 可变性: Date 和 Calendar 类都是可变的,这意味着它们的值可以被修改,这可能会导致一些线程安全和逻辑错误的问题。 可读性差

    2024年02月11日
    浏览(36)
  • StringBuilder类- StringBuffer类- 正则表达式- Date类 (日期)- SimpleDateFormat类(日期格式化的类)- Calendar类 (日历类)

    目录 stringbuilder类 StringBuffer类 正则表达式 日期 日期格式化的类 Calendar类:(日历类) 是一个抽象类 stringbuilder类 概念:可以改变的字符串 (这里跟string可以区分开,string创建的是不可改变的字符串) 底层:使用的是一个byte类型的数组,默认长度16 (string的底层使用final修

    2024年01月17日
    浏览(32)
  • 【ssl认证、证书】java中的ssl语法API说明(SSLContext)、与keytool 工具的联系

    相关文章: //-----------Java SSL begin---------------------- 【ssl认证、证书】SSL双向认证和SSL单向认证的区别(示意图) 【ssl认证、证书】java中的ssl语法API说明(SSLContext)、与keytool 工具的联系 【ssl认证、证书】SSL双向认证java实战、keytool创建证书 【ssl认证、证书】Wireshark抓包分析 【s

    2024年02月10日
    浏览(33)
  • 12个免费的API设计、开发和测试工具

    这些免费和免费层的服务和开源实用程序将使您的api立即启动并运行,并保持它们平稳运行。 RESTful api的兴起伴随着创建、测试和管理它们的工具的兴起。无论你是一个构建第一个API的新手,还是一个在棘手的截止日期前赛跑的专家,你都有一系列的服务来帮助你 将API从概念

    2024年04月24日
    浏览(19)
  • java基础入门-12-【API(算法,lambda表达式,练习)】

    ​ 数据结构是数据存储的方式,算法是数据计算的方式。 ​ 也叫做顺序查找 ​ 说明:顺序查找适合于存储结构为数组或者链表。 基本思想 基本思想 :顺序查找也称为线形查找,属于无序查找算法。从数据结构线的一端开始,顺序扫描,依次将遍历到的结点与要查找的值

    2024年02月05日
    浏览(47)
  • Java之SimpleDateFormat的用法详解

    在日常开发中,我们经常会用到时间,我们有很多办法在Java代码中获取时间。但是不同的方法获取到的时间的格式都不尽相同,这时候就需要一种格式化工具,把时间显示成我们需要的格式。 最常用的方法就是使用SimpleDateFormat类。这是一个看上去功能比较简单的类,但是,

    2024年04月13日
    浏览(21)
  • 【Java】SimpleDateFormat格式化日期

    SimpleDateFormat 是用于以区域设置敏感的方法格式化和解析日期。它允许格式化(日期文本),解析(文本日期) 对时间日期进行格式化处理 把Date对象转换为年月日时分秒格式字符串 把字符串转换为Date对象 常用的模式字母及对应关系如下:yyyy年MM月dd日HH时mm分ss秒 y 年,M 月

    2024年04月16日
    浏览(24)
  • (JAVA)hutool工具类-Date<——>String类型互转,加日期操作加一年、一月、一星期、一天、一分、一秒操作

    之前小编去搜索,把时间格式转为String类型,搜索好几篇文章都还用 【 new SimpleDateFormat () 】 去转换,现在小编用hutool里的DateUtil里的方法,简单方便一行代码搞定!! 结果如下:  效果图如下 附加如下时间加减操作:  这些都是格式,看哪种满足需求 英文格式转中文格式

    2024年02月13日
    浏览(31)
  • 还在用Calendar操作Date?Java8都弃用了,还不知道它的这款强大的工具吗?

    在过去的Java版本中,日期和时间的处理主要依赖于 java.util.Date 和 java.util.Calendar 类,然而随着业务系统的复杂以及技术层面的提升,这些传统的日期时间类暴露出了若干显著的不足之处。随着 Java8 的发布,其引入了一套全新的日期时间API,彻底改变了我们处理日期和时间的

    2024年03月18日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包