常用类-jdk8之前的日期和API

  <b><font size=4>一、System静态方法</font></b>
点击查看代码
package com.Tang.StringDay01;

import org.junit.Test;

public class DateTimeTest {
    /*
    System类中的currentTimeMillis()方法
     */
    @Test
    public void test3(){
        long time = System.currentTimeMillis();
        //返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差
        //称为时间戳
        System.out.println(time);
    }
}

代码运行结果图

二、Date类

点击查看代码
 /*
    java.tuil.Date类
    1.两个构造器的使用
            Date():创建了一个对应当前时间的Date对象
            创建指定毫秒数的Date对象
    2.两个方法的使用
           toString():显示当前的年、月、日、时、分、秒
           getTime():获取当前date对象对应的毫秒数,(时间戳)
     3.java.sql.Date对应着数据库中的日期类型的变量
     */
    @Test
    public void test(){
        //构造器一:Date():创建了一个对应当前时间的Date对象
        Date date1 = new Date();
        System.out.println(date1.toString());
        System.out.println(date1.getTime());//1655192749803
        System.out.println("=====================");
        //构造器二:创建指定毫秒数的Date对象
        Date date = new Date(1655192749803L);
        System.out.println(date);
        System.out.println("=====================");
        //创建Java.sql.Date对象
        java.sql.Date date2 = new java.sql.Date(1655192749803L);
        System.out.println(date2);
        System.out.println("=====================");
        //如何将Java.util.Date对象转换为Java.sql.Date对象
        //情况一:多态
        Date date3 = new java.sql.Date(1655192749803L);
        java.sql.Date date4 = (java.sql.Date)date3;
        //情况二:
        Date date5 = new Date();
        java.sql.Date date6 = new java.sql.Date(date5.getTime());
    }

运行结果图

三、Calendar类
1.实例化
方式一:创建其子类(GregorianCalendar)的对象
方式二:调用其静态方法getInstance()

点击查看代码
 @Test
    public void test(){
        Calendar calendar = Calendar.getInstance();
        System.out.println(calendar.getClass());//查看对象是由哪个类造的
        //常用方法
        //get()
        int days = calendar.get(Calendar.DAY_OF_MONTH);//获取今天是这个月的第几天
        System.out.println(days);
        int days1 = calendar.get(Calendar.DAY_OF_YEAR);//获取今天是这一年的第几天
        System.out.println(days1);
        //set()
        System.out.println("=============");
        calendar.set(Calendar.DAY_OF_MONTH,22);
        days = calendar.get(Calendar.DAY_OF_MONTH);//获取设置的日期是这个月的第几天
        System.out.println(days);
        //add()
        System.out.println("=============");
        calendar.add(Calendar.DAY_OF_MONTH,3);//想要再此日期上减去3天只需要写成-3即可
        days = calendar.get(Calendar.DAY_OF_MONTH);//获取当前日期是这个月的第几天,然后在此基础上加上3天
        System.out.println(days);
        //getTime():日历类---->Date
        System.out.println("=============");
        Date date = calendar.getTime();
        System.out.println(date);
        //setTime():Date--->日期类
        System.out.println("=============");
        Date date1 = new Date();//获取当前Date
        calendar.setTime(date1);//将Date转化为日期类
        days = calendar.get(Calendar.DAY_OF_YEAR);//获取该日期是这一年的第几天
        System.out.println(days);

    }
运行结果图

注意事项:
获取月份时:一月是0,二月是1,依次类推12月是11
获取星期时:周日是1,周一是2,依次类推周六是7

四、SimpleDateFormat类

点击查看代码
    /*
        SimpleDateFormat对日期Date类的格式化和解析
        1.两个操作
        1.1格式化:日期--->字符串
        1.2解析:格式化的逆过程,字符串--->日期
         */
    @Test
    public void test4() throws ParseException {
        //实例化SimpleDateFormat:使用默认的构造器
        SimpleDateFormat sdf = new SimpleDateFormat();
        //格式化:日期--->字符串
        Date date = new Date();
        System.out.println(date);
        String format = sdf.format(date);
        System.out.println(format);
        //解析:格式化的逆过程,字符串--->日期
        String str = "2022/6/15 下午4:10";//默认格式
        Date date1 = sdf.parse(str);
        System.out.println(date1);
        System.out.println("=================");
        //格式化与解析方式二:按照指定的方式进行格式化和解析:调用代参的构造器
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        String format1 = sdf1.format(date);
        System.out.println(format1);
        //解析
        Date parse = sdf1.parse("2022-06-15 04:20:53");//必须按照给定的格式,否则会抛异常
        System.out.println(parse);
    }
运行结果图


1.练习题:字符串"2022-6-15",转换为Java.sql.Date

点击查看代码
    @Test
    public void test5() throws ParseException {
        String birth = "2022-6-15";
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
        Date parse = sdf1.parse(birth);
        java.sql.Date date = new java.sql.Date(parse.getTime());
        System.out.println(date);
    }
运行结果图


2.练习题:三天打鱼两天晒网,输入两个日期,从第一个日期开始,到第二个日期是请问这天实在打鱼还是在晒网
若在测试单元@Test中无法使用Scanner输入可以参考以下解决方法;
(1)打开idea------找到help-------点击Edit Custom VM Options

(2)在最后添加:-Deditable.java.test.console=true

(3)保存,重新打开idea。

点击查看代码
 @Test
    public void test6() throws ParseException {
        //总天数的计算
        //这里在Test测试单元里无法使用Scanner,也就是无法输入日期可参考上图解决方法
        Scanner input = new Scanner(System.in);
       String s = input.nextLine();
        String s1 = input.nextLine();
     
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
        Date date1 = sdf.parse(s);
        Date date2 = sdf1.parse(s1);
        int totalDay = (int) ((date2.getTime() -date1.getTime()) /(1000 * 60 * 60 *24) + 1);
        System.out.println("从1999-04-06到2022-06-15一共有"+ totalDay+"天");
        if(totalDay % 5 == 1 || totalDay % 5 == 2 || totalDay % 5 == 3)
            System.out.println("这一天在打鱼");
        else
            System.out.println("这一天在晒网");
    }
运行结果图

posted @ 2022-07-11 17:19  剑断青丝ii  阅读(69)  评论(0编辑  收藏  举报