目录
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
诸如YEAR
、MONTH
、DAY_OF_MONTH
、等之间转换的方法HOUR
,以及用于操作日历字段(例如获取下一周的日期)的方法。时间的瞬间可以用毫秒值表示,该值是从Epoch 1970 年 1 月 1 日 00:00:00.000 GMT(公历)的偏移量。
总而言之,这是一个操作日期时间的类,用来扩展或取代Date的某些功能,缺点是没有提供格式化API。
由于这是个抽象类,所以我们往往使用它的子类GregorianCalendar
Calendar设置了一系列的静态字段以及方法,来表示与操作时间与日期
在这里主要讲一下其中静态字段的坑与主要方法。
- Calendar以1970-01-01作为起始日期
- Calendar的Month字段以0开始,0代表1月
- 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中还存在这很多重载方法,这里就不一一列举了