【Java】JDK8之前的时间日期API

1.System类的currentTimeMills()

返回当前时间与1970年1月1日0时0分0秒之间,以毫秒为单位的时间差,称为时间戳。

long time = System.currentTimeMills();
System.put.println(time);  //1669365126193

2.java.util.Date类和java.sql.Date类

sql.Date是util.Date的子类。

java.util.Date类

(1)两个构造器的使用

    public Date() {	//Date()创建一个对应当前时间的Date对象
        this(System.currentTimeMillis());
    }

    public Date(long date) {	//创建指定毫秒数的Date对象
        fastTime = date;
    }

(2)两个方法的使用

    public String toString() {}	//显示当前的年月日时分秒

    public long getTime() {	//获取当前date对象对应的毫秒数(时间戳)
        return getTimeImpl();
    }

(3)java.sql.Date

对应数据库中的日期类型的变量。
① 创建java.sql.Date对象

        java.sql.Date sqlDate = new java.sql.Date(8586988756878L);
        System.out.println(sqlDate);  //2242-02-10

        java.sql.Date sqlDate2 = new java.sql.Date(new Date().getTime());
        System.out.println(sqlDate2);  //2022-11-28

② java.util.Date和java.sql.Date对象之间的转换

Date utilDate1 = new java.sql.Date(45676543456L);	//utilDate是sqlDate的父类

java.sql.Date sqlDate1 = (java.sql.Date)utilDate1;

//使用utilDate的getTime方法
Date utilDate2 = new Date();
java.sql.Date sqlDate2 = new java.sql.Date(utilDate2.getTime());

3.java.text.SimpleDateFormat类

该类可以对日期Date类进行格式化和解析。

  • 格式化:日期 --> 字符串
  • 解析:字符串 --> 日期
//(1)默认构造器
SimpleDateFormat sdf = new SimpleDateFormat();

String stringDate = sdf.format(new Date());   //格式化
Date utilDate = sdf.parse("19-12-18 上午11:43");  //解析

//(2)按指定方式格式化和解析
//SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MMMMM.dd GGG hh:mm aaa");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

String stringDate = sdf.format(new Date());   //格式化

//要求字符串必须是符合simpleDateFormat识别的格式(sdf的构造器参数),否则抛异常
Date utilDate3 = sdf.parse("2022-11-11 23:30:24");   //解析

(1)练习一:将字符串"2020-09-18" 转换为 java.sql.Date。
(2)练习二:从1990-01-01开始三天打渔两天晒网,求今天是打渔还是晒网?

点击查看答案
//练习一
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse("2020-09-08");
java.sql.Date sqlDate = new java.sql.Date(date.getTime());

//练习二
Date date1 = sdf.parse("1990-01-01");
Date date2 = new Date();

long days = (date2.getTime()-date1.getTime())/(1000*60*60*24)+1;   //除以一天的毫秒数计算总天数,间隔要+1

if (days%5==1||days%5==2||days%5==3){
    System.out.println("打渔");
}else if (days%5==4||days%5==0){
    System.out.println("晒网");
}

4.Calender日历类

这是一个抽象类

(1)创建实例

GregorianCalendar calendar = new GregorianCalendar();  //通过其子类创建
Calendar calendar1 = Calendar.getInstance();   //通过静态方法getInstance()创建

(2)常用方法

//get()方法
int days = calendar.get(calendar.DAY_OF_MONTH);
int years = calendar.get(calendar.DAY_OF_YEAR);
System.out.println(days);   //28,这个月的第28天
System.out.println(years);  //332,今年的第332天

//set()方法,设置天数
calendar.set(calendar.DAY_OF_MONTH,22);
int days1 = calendar.get(calendar.DAY_OF_MONTH);
System.out.println(days1); //22

//add()方法,添加天数,可以为负数
calendar.add(calendar.DAY_OF_MONTH,-3);
int days2 = calendar.get(calendar.DAY_OF_MONTH);
System.out.println(days2);  //19

(3)calender和java.util.Date之间的转换

//calendar --> Date,上面做了set、add操作所以不一样
Date date1 = calendar.getTime();
System.out.println(date1);  //Sat Nov 19 14:12:25 CST 2022
System.out.println(new Date());   //Mon Nov 28 14:16:19 CST 2022

//Date --> calendar
calendar.setTime(new Date());
int days3 = calendar.get(calendar.DAY_OF_MONTH);
System.out.println(days3); //28
posted @ 2022-11-24 11:09  植树chen  阅读(33)  评论(0编辑  收藏  举报