Java提供了Date、Calendar两个类用于处理日期、时间。
但Date的大部分构造器、方法已经过时,不在推荐使用,Calendar类又过于复杂,所以Java8推出了一套新的时间日期库。
1、Date类
Date常用的构造函数:
Date() 生成一个代表当前日期时间的Date对象,相当于Date(System.currentTimeMillis())
Date(long date) 指定时间戳,默认单位ms。距1970.1.1 00:00:00的毫秒数。
Date常用方法:
boolean after(Date date) 判断是否在该时间日期之后
boolean before(Date date)
long getTime() 获取时间戳
void setTime() 设置时间戳
少用Date,尽量用Calendar代替。
2、Calendar类
Calendar类常用方法:
Calendar calendar=Calendar.getInstance(); 使用静态方法获取实例,默认为当前的时间日期
calendar.get(Calendar.YEAR) 获取指定字段的值,参数为预定义的常量,返回值均为int。月份比较特殊,0-11,0表示1月。
calendar.set(Calendar.YEAR,2020); 设置指定字段的值
calendar.set(2020,1,1); 同时设置年月日
calendar.set(2020,1,1,1,1,1); 同时设置年月日时分秒
calendar.add(Calendar.YEAR,2); 增加指定字段的值
calendar.add(Calendar.YEAR,-1); 可以为负数
参数、返回值均为int型。
Calendar类示例:
1 package test;
2
3 import java.util.Calendar;
4
5 //需要实现Cloneable接口
6 public class Test{
7 public static void main(String[] args) {
8 //使用静态方法获取实例,默认为当前的时间日期
9 Calendar calendar=Calendar.getInstance();
10 //获取年份,打YEAR选择即可
11 System.out.println(calendar.get(Calendar.YEAR));
12 //获取月份,月份从0-11,0表示1月
13 System.out.println(calendar.get(Calendar.MONTH));
14 //获取日
15 System.out.println(calendar.get(Calendar.DATE));
16 //获取时
17 System.out.println(calendar.get(Calendar.HOUR));
18 //设置指定字段的值
19 calendar.set(Calendar.YEAR,2020);
20 //同时设置年月日
21 calendar.set(2020,1,1);
22 //同时设置年月日时分秒
23 calendar.set(2020,1,1,1,1,1);
24 //增加指定字段的值,年份+1
25 calendar.add(Calendar.YEAR,1);
26 //可以为负数,年份-1
27 calendar.add(Calendar.YEAR,-1);
28 }
29 }
3、Java8新增的时间日期包
LocalDate类:代表当前时区的日期
LocalTime类:代表当前时区的时间
LocalDateTime:代表当前时区的日期时间
以上三个类都提供了静态方法now()获取当前的时间/日期/时间日期对象。
示例:
1 package test;
2
3 import java.time.LocalDateTime;
4
5 public class Test{
6 public static void main(String[] args){
7 //使用静态方法now()获取当前时间日期
8 LocalDateTime ldt=LocalDateTime.now();
9 //使用plusXxx(int x)增加指定字段的值
10 ldt.plusDays(1); //Day字段的值+1
11 //使用minusXxx(int x)方法减少指定的字段的值
12 ldt.minusHours(1); //Day字段的值-1
13 }
14 }