Java常用类————util.Date、sql.Date、Calendar

一、System.currentTimeMillis()

  • 返回当前时间与1970年1月1号0时0分0秒之间毫秒为单位的时间戳
	// 一个单元测试:测试System.currentTimeMillis()
    @Test
    public void test1(){
        long l = System.currentTimeMillis();
        System.out.println(l);
    }
// 运行结果:
1622292157466

二、java.util.Date

1. 两个构造器
  1. Date():创建一个对应时间的对象
    public void test2(){
        // 构造器一的测试 Date();
        Date date = new Date(); // 创建了一个对应当前时间的Date对象
        System.out.println("date = " + date);
        System.out.println("date.getTime() = " + date.getTime()); //调用getTime()方法返回对象的时间戳值
    }
// 运行结果:
date = Sat May 29 20:45:45 CST 2021
date.getTime() = 1622292345957
  1. Date(long):创建一个指定时间戳的Date对象
    public void test3(){
        // 构造器二测试:创建一个指定时间戳的Date对象
        Date date = new Date(1622269035440L); // 将一个时间戳作为参数传递给Date的构造器
        System.out.println(date);
    }
// 运行结果
Sat May 29 14:17:15 CST 2021
2. 两个方法
  1. toString()方法
    • 显示Date对象所表示的年、月、日、时、分、秒
  2. getTime()方法
    • 获取Date对应的时间戳

三、java.sql.Date

  • java.sql.Date对应着数据库中的日期类型的变量
  • 构造器:将一个时间戳作为参数传递给java.sql.Date的构造器
   @Test
    public void test4(){
        // 创建java.sql.Date对象
        java.sql.Date date = new java.sql.Date(1622269035440L);
        System.out.println(date ); // 2021-05-29
     }
  • 主要方法:
  • 同util.Date,toString()和getT

四、java.util.Date与java.sql.Date的转化

  1. 将sql.Date转化成util.Date
  • 调用sql.Date的getTime()得到的毫秒值作为参数传递给util.Date类的构造器
    public void test5(){
        // 创建java.sql.Date对象
        java.sql.Date date = new java.sql.Date(1622269035440L);
        System.out.println(date ); // 2021-05-29
        // 将sql.Date转化成util.Date
        long time = date.getTime();
        Date util_Date = new Date(time);
        System.out.println("util_Date = " + util_Date);
    }
  1. 将util.Date转化成sql.Date
  • 同上

四、格式化日期类SimpleDateFormat

  • 它是一个不与语言环境有关的方式来格式化和解析日期的具体类
  • 它允许格式化:日期->文本、解析; 文本->日期
1. 构造器
  • SimpleDateFormat(): 默认的模式和语言环境创建对象

  • public SimpleDateFormat(String pattren):该方法构造方法可以用参数pattern指定的格式创建一个对象

    • 使用指定格式创建的对象可以按指定的格式对日期进行格式化/解析
  • 指定格式需要遵循JDK内中的规定的符号进行组合设置
    在这里插入图片描述
  • 开发中通常采用的格式: HH表示使用 24小时制,hh表示使用12小时制
    SimpleDateFormat dateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss ");
    • 使用JDK中规定的字符,可以指定想要的日期格式。例如:如果想用五位数字表示年份可以使用"yyyyy"。
    @Test
    public void test5(){
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyy");
        Date date = new Date();
        String str = dateFormat.format(date);
        System.out.println(str); // 年份为02021
    }
2. 格式化
  • 通过调用SimpleDateFormat对象的format()将日期对象转换成为指定的日期字符串格式

将日期对象转换成指定字符串格式的步骤:

  1. 将指定格式字符串作为参数传递给SimpleDateFormat从而创建一个SimpleDateFormat对象
  2. 调用format()方法将Date对象作为参数进行格式化,返回一个指定格式的字符串
3. 解析
  • 通过调用SimpleDateFormat对象的parse()将符合指定格式的字符串转换成对应的日期
  • 如果指定的格式不符合规定则会抛出ParseException异常

将字符串日期转换成指定格式的Date对象步骤:

  1. 将指定格式字符串作为参数传递给SimpleDateFormat从而创建一个SimpleDateFormat对象
  2. 调用format()方法将Date对象作为参数进行格式化,返回一个指定格式的字符串

字符串与Date对象之间的格式化和解析:

@Test
    public void test3() throws ParseException {
        // 使用SimpleDateFormat其他的构造器进行执行形式的格式化和解析

        /***********************************格式化***********************************/
        Date date = new Date();
        // 开发中通常采用的格式:  HH表示使用 24小时制,hh表示使用12小时制
//        SimpleDateFormat dateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss ");
        SimpleDateFormat dateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss ");

        // jdk源码注释中提供的一种示例:
        SimpleDateFormat dateFormat2 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
        String date1 = dateFormat1.format(date);
        String date2 = dateFormat2.format(date);
        System.out.println(date1);
        System.out.println(date2);

        /***********************************解析***********************************/
        // 将字符串形式的日期格式化为Date对象,这里要求字符串对象的格式必须是~
        //  ~创建SimpleDateFormat对象可以识别的格式(在构造SimpleDateFormat对象时通过构造器实现)
        Date strDate = dateFormat1.parse(date1);
        System.out.println("strDate = " + strDate);
    }

五、Calendar日历类

  • Calendar是一个抽象类,因此不能直接创建其对象,通过get方法可以得到想要的日期信息
1. 实例化
  • 调用子类GregorianCalendar的构造器
    • GregorianCalendar gregorianCalendar = new GregorianCalendar();
  • 使用Calendar.getInstance()得到一个Calendar实例化的对象
    • 调用此方法返回的依旧是Calendar的子类GregorianCalendar
2. 常用方法
  1. get():通过Calendar的成员变量获取一些常用信息
  2. set():通过成员变量改变日历上的当前时间
    public void test1() {
        Calendar instance = Calendar.getInstance(); // getInstance()方法返回的依旧是子类GregorianCalendar的对象
        GregorianCalendar gregorianCalendar = new GregorianCalendar();
//        System.out.println(instance.getClass());
        // 1. get() 获取当前时间是这个月的第几天
        int i = instance.get(Calendar.DAY_OF_MONTH);
        System.out.println(i);
        // 2. set() 通过设置成员变量将当前时间设置为新的时间
        instance.set(Calendar.DAY_OF_MONTH, 20); // (现实时间为5-29)即将当前时间设置为这个月的第20天,设置完后当前时间为5-21号
        System.out.println(instance.get(Calendar.DAY_OF_MONTH));
    }
// 运行结果
29
20
  1. add():通过成员变量添加值改变日历上的当前时间
    @Test
    public void test2() {
        // 3. add()  在原有的成员变量上进行添加设置为新的时间
        Calendar calendar = Calendar.getInstance();
        Date cur_date = new Date();
        calendar.add(Calendar.DAY_OF_MONTH, 3); //(显示时间是5-29)经过添加后,当前时间变成了6-1号

        // 获取当前时间,进行格式转换并打印输出
        Date date = calendar.getTime();
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        String curTime = dateFormat.format(date);
        System.out.println(curTime);

    }
// 运行结果
2021-06-01
  1. getTime():返回日历上当前时间的Date对象
  2. setTime():通过设置改变日历上的当前时间
@Test
    public void test3() throws ParseException {
        // getTime()、setTime()
        Calendar calendar = Calendar.getInstance();
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd") ;
        Date curDate = new Date();
        Date date = calendar.getTime();
        System.out.println("由日历得到的时间"+dateFormat.format(date));
        System.out.println(String.format("直接创建Date类对象得到的时间:" + dateFormat.format(curDate)));
        // 通过setTime()方法将日历的当前时间设置为这个月月初
        String monthBegin_str = "2021-05-01";
        Date monthBegin_date = dateFormat.parse(monthBegin_str);
        calendar.setTime(monthBegin_date);
        // 输出日历的当前时间,并创建一个Date对象查看系统当前时间进行比较
        System.out.println();
        System.out.println("由日历得到的时间"+dateFormat.format(calendar.getTime()));
        System.out.println(String.format("直接创建Date类对象得到的时间:" + dateFormat.format(new Date())));
    }
// 运行结果:
由日历得到的时间2021-05-29
直接创建Date类对象得到的时间:2021-05-29

由日历得到的时间2021-05-01
直接创建Date类对象得到的时间:2021-05-29

注意:

  • Calendar类中:
    • 获取月份时:一月是0,二月是1,以此类推,12月是11
    • 获取星期时,周天是1,周一是2,… …,周六是7

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值