• 常用日期类


    目录

    日期类

    Date类概述和构造方法

    Date类的常用方法

    SimpleDateFormat类概述

    SimpleDateFormat的构造方法

    SimpleDateFormat格式化和解析日期

    Calendar类概述

    Calendar常用方法


    日期类

    Date类概述和构造方法

    帮助文档中查看:

    它在java.sql包下,我们要学习的Date应该是在util包下的Date,所以要注意我们应该学习哪一个包下的类。

    可以看到它没有用final修饰所以它是可以有子类的,上面的java.sql包下的Date就是它的子类。它继承了Object实现了三个接口。

    我们只学习它没有过时的构造方法。

    程序演示:

    1. import java.util.Date;
    2. /*
    3. Date(long date) 分配 Date对象并初始化它以表示自标准基准时间(称为“纪元”)以来的指定毫秒数,即1970年1月1日00:00:00 GMT。
    4. Date() 分配 Date对象并对其进行初始化,使其表示分配时间,测量 Date到毫秒。
    5. */
    6. public class DateDemo {
    7. public static void main(String[] args) {
    8. Date date1 = new Date();
    9. System.out.println(date1);//Sun Jun 12 18:00:47 CST 2022
    10. //没得到地址值,表示它重写了toString方法.
    11. long date2 = 1000*60*60;
    12. Date date3 = new Date(date2);
    13. System.out.println(date3);//Thu Jan 01 09:00:00 CST 1970
    14. }
    15. }

    Date类的常用方法

    程序演示:

    1. import java.util.Date;
    2. /*
    3. public long getTime():获取的是日期对象从1970年1月1日 00:00:00到现在的毫秒值
    4. public void setTime(long time):设置时间,给的是毫秒值
    5. */
    6. public class DateDemo02 {
    7. public static void main(String[] args) {
    8. //创建Date对象
    9. Date date = new Date();
    10. long time = date.getTime();
    11. System.out.println(time);//1655036423115
    12. long l = System.currentTimeMillis();
    13. System.out.println(l);//1655036449309此方法与上面Date对象调用的getTime方法同理
    14. //将time得到的毫秒值转换为年数
    15. System.out.println(time * 1.0 / 1000 / 60 / 60 / 24 / 365);//可以得到1970年1月1日距今过了52.4808..年了
    16. //public void setTime(long time):设置时间,给的是毫秒值
    17. time = System.currentTimeMillis();
    18. date.setTime(time);
    19. System.out.println(date);//Sun Jun 12 20:26:15 CST 2022
    20. }
    21. }

    SimpleDateFormat类概述

    这个类提供了让我们想要获得时间的格式。

    他在java.text包下,它也间接的继承自Object。

    SimpleDateFormat是一个具体的类,用于以区域设置敏感的方式格式化和解析让日期。我们重点学日期格式化和解析

    日期和时间格式由日期和时间模式字符串指定。 在日期和时间模式字符串中,从'A''Z'以及从'a''z'未加引号的字母被解释为表示日期或时间字符串的组成部分的模式字母。

    SimpleDateFormat的构造方法

    SimpleDateFormat格式化和解析日期

    解析:也就是我给了一个字符串最终,我得到一个日期对象。

    程序演示:

    1. import java.text.ParseException;
    2. import java.text.SimpleDateFormat;
    3. import java.util.Date;
    4. /*
    5. 构造方法:
    6. SimpleDateFormat(),构造一个 SimpleDateFormat使用默认模式和日期格式符号默认 FORMAT区域设置。
    7. SimpleDateFormat(String pattern),构造一个 SimpleDateFormat使用给定的模式和默认的默认日期格式符号 FORMAT区域设置。
    8. 格式化:从Date到String
    9. public final String format(Date date),将日期格式化成日期/时间字符串
    10. 解析:从String到Date
    11. public Date parse(String source),给定字符串的开始解析文本以生成日期
    12. */
    13. public class SimpleDateFormatDemo {
    14. public static void main(String[] args) throws ParseException {
    15. //第一件事情:格式化:从Date到String
    16. Date date = new Date();
    17. //第二件事调用format方法.这个方法在SimpleDateFormat类里面,调用方法就得创建对象
    18. SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    19. String format = simpleDateFormat.format(date);
    20. System.out.println(format);//2022-06-12 21:04:34
    21. System.out.println("-------------");
    22. //第三件事,解析
    23. String s = "2022-6-12 21:05:41";
    24. //创建对象
    25. SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    26. Date parse = simpleDateFormat1.parse(s);
    27. System.out.println(parse);//Sun Jun 12 21:05:41 CST 2022
    28. }
    29. }

    Calendar类概述

    Calendat也叫日历类

    在这张图片上有年月日,星期这样的日历信息,这样的日历信息也被称为日历字段,而我们的日历就是由这些日历字段组成的,了解了这个之后我们到帮助文档中查看:

    它在java.util包下(需要导包),继承自Object,有一个直接子类。

    可以看到它是一个抽象类,不能直接实例化,可以通过它的子类来实例化,并实现了三个接口。

    它的日历字段有很多且都是静态修饰的,所以我们访问日历字段可以直接类名通过名调方法。

    它是抽象类,不能直接创建对象,但是它的构造方法可以用于子类访问父类数据的初始化。

    它的成员方法大部分都没有使用静态修饰,所以我们要使用它的成员方法需要通过对象来使用,这个时候我们就得有一个对象。

    但是我们说过它的创建对象方式是通过类方法来实现的。

    概述:

    Calendar为某一时刻和一组日历字段之间的转换提供了一些方法,并为操作日历字段提供了一些方法。

    Calendar提供了一个类方法getInstance用于获取Calendar对象,其日历字段已使用当前日期和时间初始化;Calendar rightNOW = Calendar.getInstance();

    程序演示:

    1. import java.util.Calendar;
    2. /*
    3. Calendar为某一时刻和一组日历字段之间的转换提供了一些方法,并为操作日历字段提供了一些方法。
    4. Calendar提供了一个类方法getInstance用于获取Calendar对象,其日历字段已使用当前日期和时间初始化;
    5. Calendar rightNOW = Calendar.getInstance();
    6. */
    7. public class CalendarDemo {
    8. public static void main(String[] args) {
    9. //获取Calendar对象
    10. Calendar c = Calendar.getInstance();//这是多态的形式进行创建对象的
    11. // System.out.println(c);
    12. /*
    13. 获取年月日
    14. public int get(int field)
    15. 返回给定日历字段的值。 在宽松模式下,所有日历字段都已标准化。 在非宽松模式下,所有日历字段都经过验证,
    16. 如果任何日历字段具有超出范围的值,则此方法将引发异常。 规范化和验证由complete()方法处理,该方法依赖于日历系统。
    17. */
    18. int year = c.get(Calendar.YEAR);
    19. int month = c.get(Calendar.MONTH) + 1;//注意月是从0开始的所以需要+1
    20. int date = c.get(Calendar.DATE);
    21. System.out.println(year + "年" + month + "月" + date + "日");//2022年6月13日
    22. }
    23. }

    Calendar常用方法

    get方法已经学习过了,就说返回给定日历字段的值。

    add方法,根据日历的规则,将指定的时间量添加或减去给定的日历字段(待会详细演示)。

    set方法设置当前日历的年月日。

    代码演示:

    1. import java.util.Calendar;
    2. /*
    3. public abstract void add(int field, int amount)
    4. 根据日历的规则,将指定的时间量添加或减去给定的日历字段。 例如,要从日历的当前时间减去5天,
    5. 您可以通过调用以下方法来实现:
    6. add(Calendar.DAY_OF_MONTH, -5)
    7. public void set(int field, int value)
    8. 将给定的日历字段设置为给定值。 无论宽大模式如何,此方法都不会解释该值。
    9. */
    10. public class CalendarDemo {
    11. public static void main(String[] args) {
    12. //获取日历对象
    13. Calendar instance = Calendar.getInstance();
    14. //public int get(int field)返回给定日历字段的值。 在宽松模式下,所有日历字段都已标准化。
    15. int year = instance.get(Calendar.YEAR);
    16. int month = instance.get(Calendar.MONTH) + 1;//注意月是从0开始的所以需要+1
    17. int date = instance.get(Calendar.DATE);
    18. System.out.println(year + "年" + month + "月" + date + "日");//2022年6月13日
    19. //需求1:获取三年前的今天
    20. //public abstract void add(int field, int amount),根据日历的规则,将指定的时间量添加或减去给定的日历字段.
    21. // instance.add(Calendar.YEAR,-3);//这里就是将当前的年份减去3
    22. int year1 = instance.get(Calendar.YEAR);
    23. int month1 = instance.get(Calendar.MONTH) + 1;//注意月是从0开始的所以需要+1
    24. int date1 = instance.get(Calendar.DATE);
    25. System.out.println(year1 + "年" + month1 + "月" + date1 + "日");//2019年6月13日
    26. //需求2:获取十年后的五天前
    27. instance.add(Calendar.YEAR,+10);//注意上述代码已经将年份加3了,所以我们要不吧上面的代码注释掉要么多加3年
    28. instance.add(Calendar.DATE,-5);
    29. int year2 = instance.get(Calendar.YEAR);
    30. int month2 = instance.get(Calendar.MONTH) + 1;//注意月是从0开始的所以需要+1
    31. int date2 = instance.get(Calendar.DATE);
    32. System.out.println(year2 + "年" + month2 + "月" + date2 + "日");//2032年6月8日
    33. //需求3:将当前的日历的年月日设置为2048年6月13日
    34. //public void set(int year,int month,int date),将给定的日历字段设置为给定值。 无论宽大模式如何,此方法都不会解释该值。
    35. instance.set(2048,5,13);//注意set的月份要-1
    36. int year3 = instance.get(Calendar.YEAR);
    37. int month3 = instance.get(Calendar.MONTH) +1;
    38. int date3 = instance.get(Calendar.DATE);
    39. System.out.println(year3 + "年" + month3 + "月" + date3 + "日");//2048年6月13日
    40. }
    41. }

    --欢迎大家和我一起交流java知识。

    知无不言,言无不尽

     

  • 相关阅读:
    TRC心血管研究之艾美捷TRC缺血研究领域
    【单片机】单片机入门指南
    一文带你深入浅出C语言动态内存分配
    芋道前后端分离项目跳过登录
    【三维目标检测】3DSSD(一)
    [附源码]java毕业设计网上拍卖系统
    【云计算】云数据中心网络(七):负载均衡
    java基础 集合(3) Map接口、Collections工具类、集合总结
    vue 常用开发父子组件的通信
    网络编程中的IO模型
  • 原文地址:https://blog.csdn.net/weixin_67796933/article/details/125436354