Java常用类(二)

目录

JDK8之前的日期时间API

java.lang.System类

java.util.Date类

两个构造器的使用

两个方法的使用

 java.sql.Date类

涉及两个问题:

 java.text.SimpleDateFormat类

格式化:日期--->字符串

解析:字符串--->日期(格式化的逆过程)

 java.util.Calendar(日历)类

获取Calendar实例的方法

Calandar类的常用方法


JDK8之前的日期时间API

java.lang.System类

System类提供public static long currentTimeMillis()用来返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。(时间戳)

计算世界时间的主要标准有:

  • UTC(Coordinated Universal Time)//世界协调时间
  • GMT(Greenwich Mean Time)//格林威治标准时间
  • CST(Central Standard Time)
    • CST可以代表如下 4 个不同的时区://CST可以同时表示美国,澳大利亚,中国,古巴四个国家的标准时间 
      • Central Standard Time (USA) UT-6:00 
      • Central Standard Time (Australia) UT+9:30 
      • China Standard Time UT+8:00 
      • Cuba Standard Time UT-4:00 

java.util.Date类

表示特定的瞬间,精确到毫秒

两个构造器的使用

  • 构造器一:util下的Date():创建一个对应当前时间的Date对象
  • 构造器二:util下的Date(long date):创建一个指定时间的Date对象

两个方法的使用

  • 方法一:toString():把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat),zzz是时间标准)
  • 方法二:getTime():获取当前Date对象所对应的毫秒数(时间戳:自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象 表示的毫秒数)
import org.junit.Test;

import java.util.Date;
public class DateTimeTest {
     @Test
    public void test1(){

        //构造器一:util下的Date():创建一个对应当前时间的Date对象
        Date date1 = new Date();
        System.out.println(date1.toString());
        System.out.println(date1.getTime());

        //构造器二:util下的Date():创建指定时间的Date对象
        Date date2 = new Date(1669275759155L);
        System.out.println(date2.toString());
    }
}

运行结果:

 java.sql.Date类

java.sql.Date类对应着数据库中的日期变量类型

涉及两个问题:

  • 1、如何实例化sql.Date对象
  • 2、util.Date和sql.Date对象如何相互转换
package com.light.java;

import org.junit.Test;

import java.util.Date;

/**
 * @auther light
 * @Description JDK8之前的日期时间API
 * @create 2022-11-24 15:35
 */
public class DateTimeTest {
    /**
     * |---java.sql.Date类
     *  java.sql.Date:对应这数据库中的日期类型变量
     *      >如何实例化
     *      >sql.Date--->util.Date(直接赋值:多态)
     *
     *      >如何将java.util.Date对象转换为java.sql.Date对象:
     *
     */
    @Test
    public void test1(){
                              
       System.out.println("\n**********************sqlDate**************************");
        //创建SQL类中的Date对象
        java.sql.Date date3 = new java.sql.Date(1669276192545L);
        System.out.println(date3.toString());//只输出年月日
        System.out.println("\n**********************sql.Date--->util.Date(直接赋值:多态)**************************");
        Date date4 = new Date();
        date4=date3;
        System.out.println(date4.toString());


        System.out.println("\n**********************将java.util.Date对象转换为java.sql.Date对象**************************");
        //从父类-->子类
        Date date5=new Date();
        java.sql.Date date6=new java.sql.Date(date5.getTime());//利用getTime()方法获取util.Date和sql.Date中共有的部分
        System.out.println(date6.toString());

    }
}

运行结果

 java.text.SimpleDateFormat类

Date类的API不易于国际化,大部分被废弃了,java.text.SimpleDateFormat 类是一个不与语言环境有关的方式来格式化和解析日期的具体类。

格式化:日期--->字符串

  • SimpleDateFormat():默认模式的语言环境创建对象(默认构造器)
  • SimpleDateFormat(String pattern):该构造器可以用参数pattern指定的的格式创建一个对象,该对象调用:
    • public String format(Date date):方法格式化时间对象

解析:字符串--->日期(格式化的逆过程)

  • public Date parse(String source):从给定字符串的开始解析文本,以生成一个日期

import org.junit.Test;

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

/**
 * @auther light
 * @Description JDK 8之前的日期时间的API测试
 * SimpleDateFormat
 *  
* @create 2022-11-25 19:32
 */
public class DateTimeTest {
    /**
     * SimpleDateFormat的使用:SimpleDateFormat是对日期Date类的格式化和解析
     *
     * 1、两个操作:格式化和解析
     *      格式化:日期----->字符串
     *      解析:格式化的逆过程:字符串---->日期
     *
     * 2、SimpleDateFormat的实例化
     *
     */
    @Test
    public void test1() throws ParseException {
        //实例化SimpleDateFormat:使用默认构造器
        SimpleDateFormat sdf = new SimpleDateFormat();

        //格式化日期 java.util.Date
        Date date = new Date();
        System.out.println(date);
        String format = sdf.format(date);
        System.out.println(format);

        //解析:格式化的逆过程:字符串--->日期
        String str="22-11-25 下午7:42";
        Date parse = sdf.parse(str);
        System.out.println(parse);


        System.out.println("************按指定的方式格式化和解析:带参数的构造器*******************");
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        //格式化
        String format1 = sdf1.format(date);
        System.out.println(format1);//2022-11-25 08:40:43
        //解析:要求字符串必须是SimpleDateFormat识别的格式(通过构造器参数体现)
        Date parse1 = sdf1.parse("2022-11-25 08:36:46");
        System.out.println(parse1);


    }


  
}

运行结果:

 java.util.Calendar(日历)类

Calendar是一个抽象基类(不能被实例化),主用用于完成日期字段之间相互操作的功能。

获取Calendar实例的方法

  •  使用其静态方法getInstance()
  •  创建Calendar的子类(GregorianCalendar)的构造器。

Calandar类的常用方法

  • 一个Calendar的实例是系统时间的抽象表示,通过get(int field)方法来取得想要的时间信息。比如YEAR、MONTH、DAY_OF_WEEK、HOUR_OF_DAY 、 MINUTE、SECOND
  •  public void set(int field,int value)//该方法没有返回值,直接在原有字符串上进行修改
  •  public void add(int field,int amount)//该方法没有返回值,直接在原有字符串上进行修改
  •  public final Date getTime()
  •  public final void setTime(Date date)

注意:

  • 获取月份时:一月是0,二月是1,以此类推,12月是11
  • 获取星期时:周日是1,周二是2 , 以此类推,周六是7 
 import org.junit.Test;


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

public class DateTimeTest {
/**
     * 日历类(抽象类)的使用
     */
    @Test
    public void testCalender(){
     //一、实例化
        //方式一:创建子类GregorianCalendar的构造器
        GregorianCalendar g=new GregorianCalendar();
        //set
        g.set(2022,11,28);
        System.out.println(g.getTime());
        //方式二:调用其静态方法getInstance()
        Calendar calender = Calendar.getInstance();

    //二、常用方法
        //get()

        int i = calender.get(Calendar.DAY_OF_MONTH);
        System.out.println(i);
        //set()
        calender.set(Calendar.DAY_OF_MONTH,27);
        int i1 = calender.get(Calendar.DAY_OF_MONTH);
        System.out.println(i1);

        //add()
        calender.add(Calendar.DAY_OF_MONTH,-1);
        int i2 = calender.get(Calendar.DAY_OF_MONTH);
        System.out.println(i2);

        //getTime():将Calender类转换为Date类
        Date date = calender.getTime();
        System.out.println(date);


        //setTime():将Date类转换为Calender类
        Date date1 = new Date();
        calender.setTime(date1);
        int i3 = calender.get(Calendar.DAY_OF_MONTH);
        System.out.println(i3);

    }
}

运行结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值