众所周知,Date(日期),Calendar(日历),DateFormat(日期格式)是Java一个非常重要的部分。但JAVA8之前,日期的处理太恶心了,先来吐糟一下.
吐糟
1.很早之前,Date既要承载日期信息,又要做日期之间的转换,还要做不同日期格式的显示,职责较繁杂. 从jdk1.1开始,这3个职责分开了.
a. 使用Calendar类实现日期和时间字段之间转换.
b. 使用DateFormat类来格式化和分析日期字符串.
c. Date只用来承载日期和时间信息.
2.坑爹的year、month
Date date = new Date(2016,1,1);
//输出的日期肯定不是2016/1/1
或许有人会用,
Calendar calendar = Calendar.getInstance();
calendar.set(2016, 1, 1); //这TM仍然不是2016/1/1
3.java.util.Date与java.util.Calendar中的所有属性都是可变的
public static void main(String[] args) {
Calendar birth = Calendar.getInstance();
birth.set(1975, Calendar.MAY, 26);
Calendar now = Calendar.getInstance();
System.out.println(daysBetween(birth, now));
System.out.println(daysBetween(birth, now)); // 显示 0
}
public static long daysBetween(Calendar begin, Calendar end) {
long daysBetween = 0;
while(begin.before(end)) {
begin.add(Calendar.DAY_OF_MONTH, 1);
daysBetween++;
}
return daysBetween;
}
建议使用的java日期使用方式
-
Joda
-
Java8