javaAPI(三):jdk8之前的日期API

jdk 8之前的日期时间API

1、System类中currentTimeMillis()。
2、 java.util.Date和子类java.sql.Date。
3、SimpleDateFormat
4、Calendar

System返回时间戳

long time = System.currentTimeMillis();
        System.out.println(time);

Date类

java.util.Date类

实例化

构造器一:Date(),创建当前时间的对象。
构造器二:Date(long time),创建一个time时间戳的对象。

 Date date1 = new Date();//创建当前时间的对象
 Date date2 = new Date(1586664893454L);创建一个time时间戳的对象

方法
toString() 显示当前时间的年月日时分秒
getTime() 获取当前对象的时间戳

System.out.println(date1.toString());//显示当前时间的年月日时分秒:Sun Apr 12 13:00:48 CST 2020
System.out.println(date1.getTime());//获取当前对象时间戳:1586667648419

java.sql.Date

对应着数据库中日期类型的变量。
构造器

数据库Date()构造器只有时间戳有参构造器。

方法

toString() 只显示当前时间的年月日
getTime() 获取当前对象的时间戳。

java.sql.Date date = new java.sql.Date(1586664893454L);
System.out.println(date.toString());//只显示年月日

java.util.Date与java.sql.Date的转换

sql.Date()–>util.Date(): 直接赋值 ,多态的体现。

Date date1 = new Date();
java.sql.Date date2 = new java.sql.Date(1586664893454L);
date1 = date2;

util.Date()–>sql.Date():
**方式一:**强制转换

Date date3 = new java.sql.Date(1586664893454L);
java.sql.Date date4 = (java.sql.Date) date3;//强制转换方式

方式二:

Date date5 = new Date();
java.sql.Date date6 = new java.sql.Date(date5.getTime());//构造器获取时间戳(getTime获取时间戳)

SimpleDateFormat

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

格式化:日期(类型)—>字符串

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

public void testSimpleDateFormat() throws ParseException {
        //使用默认构造器
        SimpleDateFormat sdf = new SimpleDateFormat();
        Date date = new Date();
        String format = sdf.format(date);
        System.out.println(format);//20-4-14 下午12:41

        //使用自定义格式构造器,调用带参构造器
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        String format1 = sdf1.format(date);
        System.out.println(format1);//2020-04-14 12:41:54

    }

解析:字符串—>日期(类型)

public Date parse(String source):从给定字符串的开始解析文本,以生成一个日期。
传入的字符串需要满足构造器给定的格式。需要抛出异常:对写入的字符串不识别,需要抛异常。

public void testSimpleDateFormat2() throws ParseException {
        //使用默认构造器
        SimpleDateFormat sdf = new SimpleDateFormat();
        Date parse = sdf.parse("20-4-14 下午12:41");
        System.out.println(parse);

        //使用自定义格式构造器
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        Date parse1 = sdf1.parse("2020-04-14 12:41:54");
        System.out.println(parse1);
    }

练习题

三天打鱼两天筛网 1990-01-01 xxxx-xx-xx 打鱼?筛网?
思路:

总天数 % 5 ==1,2,3:打鱼
总天数 % 5 == 4,0:筛网
总天数计算:
(date2.getTime() - date1.getTime()) / (1000 * 60 *60 *24)) +1
+1的原因:在java中 / 结果为整数,除不尽的情况下,+1更加准确。

Calendar日历类(抽象类)

Calendar是一个抽象基类,主要用于完成日期字段之间互相操作功能。

Calendar实例化

1、调用它的子类GregorianCalendar的构造器
2、使用Calendar.getInstance()方法

 Calendar calendar = Calendar.getInstance();
        System.out.println(calendar.getClass());//class java.util.GregorianCalendar:仍是Calendar其子类对象GregorianCalendar

Calendar方法

一个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

public void testCalendar(){
        /*
        实例化
            方式一:创建其子类对象(GregorianCalendar)的对象
            方式二:调用其静态方法getInstance()
         */
        Calendar calendar = Calendar.getInstance();
        System.out.println(calendar.getClass());//class java.util.GregorianCalendar:仍是Calendar其子类对象GregorianCalendar

        //get()
        int days = calendar.get(Calendar.DAY_OF_MONTH);
        System.out.println(days);//14

        //set()
        calendar.set(Calendar.DAY_OF_MONTH,22);//此方法无返回值,那么意味着直接更改
        days = calendar.get(Calendar.DAY_OF_MONTH);
        System.out.println(days);//22

        //add()
        calendar.add(Calendar.DAY_OF_MONTH,3);//对属性增加三天   -3为减三天
        days = calendar.get(Calendar.DAY_OF_MONTH);
        System.out.println(days);//25

        //getTime():日历类  --> Date对象
        Date time = calendar.getTime();//返回一个Date对象
        System.out.println(time);//Sat Apr 25 14:37:22 CST 2020

        //setTime():Date -->日历类
        Date date = new Date();
        calendar.setTime(date);
        days = calendar.get(Calendar.DAY_OF_MONTH);
        System.out.println(days);//14

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值