一、Date类的概述和构造方法
Date代表一个特定的时间,精确到毫秒(java.util.Date)
public Date() 分配一个Date对象,并初始化,以便它代表它被分配的空间
public Date(long date) 分配一个Date对象,并初始化,以表示它从标准基准时间起指定的毫秒数
getYear(), 获取年
getMonth(), 获取月份,从0开始
getDate(), 获取天数(当前月)
getDay(), 获取星期,从0开始(星期天是每周的第一天)
getTime(), 获取从1970.1.1 0:0:0到代码运行的那一行的时间
注:在程序编写前 new一个date,在代码编写完成时(运行前) new一个date,两个getTime()的差值就是程序运行的时间
这些方法都是已经过时的方法,已被弃用,在编写程序时不建议使用
二、Calender(日历)
Calender类是一个抽象类,它为特定瞬间与一组诸如TEAR、MONTH、等日历字段之间的转换提供了一些方法,并为操作日历字段提供了一些方法。
注:① Calender类是一个抽象类,并且构造器是protect
② 可以通过getInstance() 来获取实例
对象的创建:
Canlender c = Canlender.getInstance();
Canender没有对应的格式化方法,所以需要自己来组合显示
三、第三代日期类
前两代的不足分析
JDK1.0中包含了一个java.util.Date类,但是它的大多数方法已经在JDK1.1引入Can lender类之后被弃用了。而Can lender也存在问题。
① 可变性:像日期和时间这样的类应该是不可变的
② 偏移性:Date中的年份是从1900开始的,而月份都是从0开始
③ 格式化:格式化只对Date有用,Canlender则不行
④ 此外,它们也不是线程安全的,不能处理闰秒(每隔两天,多出一秒)等
第三代日期类的常见方法
1. LocalDate(日期/年月日)、LocalTime(时间/时分秒)、LocalDateTime(日期时间) JDK8加入
2. DateTimeFormatter格式日期类
类似于SimpleDateFormat
DateTimeFormat dtf = DateTimeFormatter.ofPatten(格式);
String str = dtf.format(日期对象);
eg:DateTimeFormatter.ofPatten("yyyy年MM月dd日");
// 使用DateTimeFormatter对象来进行格式化
String format = dateTimeFormat.format(LocalDateTime.now()); //格式化
3.Instant 时间戳
类似于Date,提供了一系列和Date类转换的方式