日期类(jdk8之前)

简介: 日期类(jdk8之前)

1.date

1>   Date的空参构造方法,其代表的是当前的时间节点

 

Date d1=new Date();
//在这里,使用的是date的空参构造方法,其中封装的是现在的具体时间
//直接对于d1进行打印,会直接显示出来现在的具体时间
//由此可以知道,在Date当中,已经是对于Tostring方法进行过了相应的重写,从而直接展示出来其中的具体内容,详细情况
 

2>  有关date当中存在的一些方法:

//      1:String getTime()
System.out.println(d1.getTime());
//展示出来的是距离c语言出生的时候到现在已经是过去了多少毫秒
/*
        2.void setTime(long num)
        在其中需要输入一个long类型的数值,同时的,没有返回值
 */
d1.setTime(0L);
System.out.println(d1);
//展示出来的是对于c语言出生到这个set所设定的过去了多长的时间 1000L就是对于起源时间过去了1秒
 
        //这一点上,其实跟date的含参构造方法是一样的用途
Date d2 =new Date(0L);
System.out.println(d2);
//最终的结果也是一个相应的源时间节点

2.Simpledate(时间格式化)

  1>空参的构造方法,使用默认的系统日期格式化


         


 SimpleDateFormat simple =new SimpleDateFormat();
 
Date d1=new Date();
 
System.out.println(d1);
//没有进行时间格式化的结果  Sun Nov 26 11:43:10 CST 2023
 
System.out.println(simple.format(d1));
//进行过时间格式化的结果  23-11-26 上午11:43

2>使用含参的构造方法

       


SimpleDateFormat simple1 =new SimpleDateFormat("yyyy年MM月dd日  HH:mm:ss  E  a");
 
        //对于时间格式化的具体内容,可以到相应的API文档当中进行寻找
//E代表星期,a代表的是上午下午还是晚上或者是凌晨的时间节点
 
Date d2 =new Date();
 
System.out.println(simple1.format(d2));

***将日期字符串转化成为相应的date,也可以使用simpleDateFormae的方法来进行完成



String date =in.next();
SimpleDateFormat simple2=new SimpleDateFormat("yyyy年MM月dd日");
Date parse = simple2.parse(date);
System.out.println(simple2.format(parse));

3.Calender类

有关日历Calender的使用,以及其中含有的一些方法

Calender本身是一个抽象类,所以在创建的时候相当于使用了一个多态的存在

使用父类的同时,对于子类当中Calender的getIntstance方法进行调用

方法:

       1:static int get(int num): 获取Calender当中具体内容的方法,返回值为int类型


           tips:在输入其中的数字的时候,建议直接调用Calender当中的静态方法,而不是记数字


               方式:使用Calender当中的静态方法,Calender.需要获取的具体内容等等

 public static void getmethod(){
    Calendar c =Calendar.getInstance();
    System.out.println(c);
    //Calender本身含有许多的数值,其中包括了年月日以及星期等等,如果需要使用这些数据,那么就要对其中具体的内容进行调用
    int YEAR = c.get(Calendar.YEAR);
    System.out.println(YEAR);
    //获取年份
    int MOUTH = c.get(Calendar.MONTH);
    System.out.println(MOUTH+1);
    //获取月份
    //需要注意的一点是,在获取月份的时候,最开始的一月,是从0开始进行数的,所以需要在结果的时候加1;
 
    int WEEKDATE = c.get(Calendar.DAY_OF_WEEK);
 
    char[] weekindex ={' ','日','一','二','三','四','五','六',};
    //根据相应的索引来寻找对应的星期
    //同时,要注意的一点是,数组当中是从0开始进行数的,当时在星期数中是只有从1开始进行数数的,所以应当让第一个索引位置的数直接是一个空的字符
    System.out.println(weekindex[WEEKDATE]);
    tips:
        在外国人眼中,每周的第一天并不是周一,而是周日
        排序:
            日  一  二  三  四  五  六
            1   2   3   4  5   6  7
 
            对此,我们可以采用数组的方式,让其中的数字转变成为相应的星期天数

  2:static void set(Calender ,int num)

           输入自己需要进行修改的具体内容,年,或者月日等等(都需要调用Calender当中的方法)


public  static void setmethod(){
    Calendar x =Calendar.getInstance();
 
    x.set(Calendar.YEAR,2050);
    int YEAR = x.get(Calendar.YEAR);
    System.out.println(YEAR);
    //指定需要进行修改的数值,可以是年月日也可以是一个星期
    //结果:2050
    x.set(2050,3,2);
    //既可以修改制订的一个数值,也可以对于全部的值进行修改,年月日等等
    System.out.println(x.get(Calendar.YEAR)+" "+x.get(Calendar.MONTH)+" "+x.get(Calendar.DAY_OF_MONTH));
}

 另一方面,我们也可以使用一次性修改全部的内容

           static void set(year,mouth,day),也可以修改具体的时间,时,分等等

         

         

       3:static void add(Calender ,int num)

           输入自己具体需要进行增加或者减去的日期,后面输入需要增加多少

 

public static void addmethod(){
        Calendar c=Calendar.getInstance();
        c.add(Calendar.YEAR,1);
        int addYEAR = c.get(Calendar.YEAR);
        //对于自己需要进行修改的值就行增添或者是减少,并且跟set方法是一样的,没有任何的返回值(void)
        System.out.println(addYEAR);
    }
  类型转化:
       有关对于Calender以及Date之间的相互转化
            从Date-->Calender
                static void setTime(Date date)
                能够将相应的日期类型date直接转化成为Calender的类型

test1:


//输入一个日期字符串,并求出其是这一年的第几天
  Scanner in=new Scanner(System.in);
  String x =in.nextLine();
 
  SimpleDateFormat simple =new SimpleDateFormat("yyyy-MM-dd");
  Date parse = simple.parse(x);
 
  Calendar y =Calendar.getInstance();
  //能够将date类型转换成为一个Calender的类型
  y.setTime(parse);
  y.add(Calendar.MONTH,1);
  System.out.println(y.get(Calendar.DAY_OF_YEAR));

test2:

//课堂检测:判断2025年3月1日是否是疯狂星期四
        Calendar c = Calendar.getInstance();
 
        //需要注意的一点,其中的月份,是从0开始当作是第一个月的,所以在这里的三月实际上应该是用 2 来进行替换
        c.set(2050, 2, 1);
        int Weekdate = c.get(Calendar.DAY_OF_WEEK);
        char[] Weekindex = {' ', '日', '一', '二', '三', '四', '五', '六' };
        if (Weekindex[Weekdate] == '四') {
            System.out.println("是疯狂星期四");
        } else {
            System.out.println("不是疯狂星期四");
        }
    }
相关文章
|
4月前
|
安全 Java API
JDK 11中的动态类文件常量:探索Java字节码的灵活性与动态性
在JDK 11中,Java语言引入了一个新的特性,允许在运行时动态地修改类文件常量。这一特性为Java开发者提供了更大的灵活性,使他们能够根据需要在运行时更改类文件中的常量值。本文将深入探讨动态类文件常量的工作原理、优点、限制以及在实际项目中的应用。
123 11
|
4月前
|
安全 Java API
14.JDK底层Unsafe类是个啥东西?
14.JDK底层Unsafe类是个啥东西?
73 0
14.JDK底层Unsafe类是个啥东西?
|
4月前
|
Java
Integer类【JDK源码分析】
Integer类【JDK源码分析】
39 0
|
3天前
|
Java Linux
java基础(3)安装好JDK后使用javac.exe编译java文件、java.exe运行编译好的类
本文介绍了如何在安装JDK后使用`javac.exe`编译Java文件,以及使用`java.exe`运行编译好的类文件。涵盖了JDK的安装、环境变量配置、编写Java程序、使用命令行编译和运行程序的步骤,并提供了解决中文乱码的方法。
16 1
|
22天前
|
Java API 开发者
【Java字节码操控新篇章】JDK 22类文件API预览:解锁Java底层的无限可能!
【9月更文挑战第6天】JDK 22的类文件API为Java开发者们打开了一扇通往Java底层世界的大门。通过这个API,我们可以更加深入地理解Java程序的工作原理,实现更加灵活和强大的功能。虽然目前它还处于预览版阶段,但我们已经可以预见其在未来Java开发中的重要地位。让我们共同期待Java字节码操控新篇章的到来!
|
19天前
|
Java API 开发者
【Java字节码的掌控者】JDK 22类文件API:解锁Java深层次的奥秘,赋能开发者无限可能!
【9月更文挑战第8天】JDK 22类文件API的引入,为Java开发者们打开了一扇通往Java字节码操控新世界的大门。通过这个API,我们可以更加深入地理解Java程序的底层行为,实现更加高效、可靠和创新的Java应用。虽然目前它还处于预览版阶段,但我们已经可以预见其在未来Java开发中的重要地位。让我们共同期待Java字节码操控新篇章的到来,并积极探索类文件API带来的无限可能!
|
3天前
|
编解码 安全 Java
jdk8新特性-接口和日期处理
jdk8新特性-接口和日期处理
|
1月前
|
存储 Java
【Java集合类面试七】、 JDK7和JDK8中的HashMap有什么区别?
JDK7中的HashMap使用数组加链表解决冲突,而JDK8增加了红黑树结构以优化链表过长时的性能,提高查找效率。
|
1月前
|
Oracle 安全 Java
JDK8到JDK28版本升级的新特性问题之在Java 15及以后的版本中,密封类和密封接口是怎么工作的
JDK8到JDK28版本升级的新特性问题之在Java 15及以后的版本中,密封类和密封接口是怎么工作的
|
1月前
|
Java 编译器 API
JDK版本特性问题之在 JDK 17 中,想声明一个密封类,如何解决
JDK版本特性问题之在 JDK 17 中,想声明一个密封类,如何解决