JDK8以前的日期时间框架

目录

1、Date

2、SimpleDateFormat

3、Calendar


1、Date

虽然Date中的大部分API已被弃用,但保留了一些API

  • Date():把当前日期设置为Date对象
  • long getTime():返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此Date对象表示的毫秒数。

如果需要调用Date的有参构造器创建对象,需要注意的是,日期的偏移量。举个例子:

Date date1 = new Date(2020, 1, 2);

相当于调用

Calendar.set(year + 1900, month, date, hrs, min);
Calendar.set(2020 + 1900, 1, 2, 0, 0);

即创建出来的对象为3920-02-02。所以year的偏移量为1900,1 对应2月,0对应1月

2、SimpleDateFormat

此类用来格式与解析日期

格式:日期 ---> 文本

解析:文本 ---> 日期

因为SimpleDateFormat的格式化方法是实例方法,所以要先实例化SimpleDateFormat

既然是格式化器,要么就应该指定格式化模式,如何指定呢?官方文档提示

日期和时间格式由日期和时间模式 字符串指定。

在日期和时间模式字符串中,未加引号的 from 'A'to'Z'和 from 'a'to 'z'被解释为表示日期或时间字符串组件的模式字母

具体的字母对应的模式可以在官方文档查看 

常用方法

  • SimpleDateFormat()
    SimpleDateFormat使用默认语言环境的默认模式和日期格式符号 构造一个FORMAT
    SimpleDateFormat(String pattern)
    SimpleDateFormat使用给定模式和默认语言环境的默认日期格式符号 构造一个FORMAT
  • public Date parse(String source) throws ParseException:输入一个日期字符串返回一个日期   
  • public final String format(Date date) :输出格式化后的日期字符串
     

在使用时要注意,一个SimpleDateFormat只能解析或格式化一个模式 

3、Calendar

官方文档中说:

该类Calendar是一个抽象类,它提供了在特定时刻与一组calendar fields诸如YEARMONTH、 DAY_OF_MONTH、等之间转换的方法HOUR,以及用于操作日历字段(例如获取下一周的日期)的方法。时间的瞬间可以用毫秒值表示,该值是从Epoch 1970 年 1 月 1 日 00:00:00.000 GMT(公历)的偏移量。

总而言之,这是一个操作日期时间的类,用来扩展或取代Date的某些功能,缺点是没有提供格式化API。

由于这是个抽象类,所以我们往往使用它的子类GregorianCalendar

Calendar设置了一系列的静态字段以及方法,来表示与操作时间与日期

在这里主要讲一下其中静态字段的坑与主要方法。

  1. Calendar以1970-01-01作为起始日期
  2. Calendar的Month字段以0开始,0代表1月
  3. Calendar的星期字段从1开始,1表示星期天

常用方法:

  • public static Calendar getInstance():获取一个Calendar实例,这里实际上返回的是Calendar的子类
  • static Calendar getInstance()

    使用默认时区和区域设置获取日历。通过该方法生成Calendar对象。如下所示:Calendar cr=Calendar.getInstance();
    public void set(int field,int value)设置对应时间字段的大小
    public int get(int field)返回给定日历字段的值。field就是定义的静态字段。
    public void setTime(Date date)使用给定的Date设置此日历的时间。Date------Calendar
    public Date getTime()返回一个Date表示此日历的时间。Calendar-----Date
    abstract void add(int field,int amount)按照日历的规则,给指定字段添加或减少时间量。
    public long getTimeInMillies()以毫秒为单位返回该日历的时间值。

Calendar中还存在这很多重载方法,这里就不一一列举了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值