Date类
java.util.Date Date是一个实例,用于表示一个确切的时间。
构造方法:
public Date():无参构造,默认表示当前系统时间的毫秒时刻
public Date(long date):指定long类型的构造参数,可以自定义毫秒时刻以表示从标准基准时间(1970年1月1日00:00:00)以来的指定毫秒数。
// 创建日期对象,把当前的时间
System.out.println(new Date()); // Fri Nov 22 19:32:40 CST 2019
// 创建日期对象,把当前的毫秒值转成日期对象
System.out.println(new Date(1574422380880L));// Fri Nov 22 19:33:00 CST 2019
常用方法:
public long getTime():把日期对象转换成对应的时间毫秒值。
void setTime(long time):设置此 Date 对象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以后 time 毫秒的时间点。
Date date1 = new Date(1574422380880L);//获取该Date内部维护long值表示从1970-1-1 00:00:00到这一刻的毫秒值
long time = date1.getTime();
System.out.println(time);//1574422380880
//让当前date给定的毫秒数所表示的时间(格林威治)是0时0分0秒
date1.setTime(0);
System.out.println(date1);//Thu Jan 01 08:00:00 CST 1970
//明天的此时此刻
date1.setTime(time+24*3600*1000);
System.out.println(date1);//Sat Nov 23 19:33:00 CST 2019
DateFormat抽象类
java.text.DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间
SimpleDateFormat类
由于DateFormat为抽象类,所以需要常用的子类SimpleDateFormat。这个类需要一个模式(格式)来指定格式化或解析的标准。
构造方法为:
public SimpleDateFormat(String pattern):用给定的模式和默认语言环境的日期格式符号
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
常用方法:
public String format(Date date):将Date对象格式化为字符串。
public Date parse(String source):将字符串解析为Date对象。
String str = "2008-08-08 08:08:08";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
/*
* Date parse(String str)
* 将给定的字符串按照SimpleDateFormat指定的日期格式解析
* 并转换为Date对象返回
*/
Date date11= sdf.parse(str);
System.out.println(date11);//Fri Aug 08 08:08:08 CST 2008
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日 hh时mm分ss秒");
Date date2 = new Date();
String str1 = sdf1.format(date2);
System.out.println(str1);//2019年12月15日 10时44分58秒
Calendar类
java.util.Calendar是日历类,替换掉了许多Date的方法。日历类就是方便获取各个时间属性的。
Calendar为抽象类,不能直接创建,需要一个实现类才能new对象,但是java中提供了一个方法getInstance()方法,可以直接返回一个Calendar对象,非常简便
Calendar cal = Calendar.getInstance();
public int get(int field):返回给定日历字段的值。
public void set(int field, int value):将给定的日历字段设置为给定值。
public abstract void add(int field, int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量。
public Date getTime():返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。
//创建Calendar对象
Calendar calendar = Calendar.getInstance();
System.out.println(calendar);
//而是拿到对应的Date对象
Date date = calendar.getTime();
System.out.println(date);//Sat Nov 23 14:30:19 CST 2019
calendar.set(calendar.YEAR, 2008);
calendar.set(calendar.MONDAY, 8);
calendar.set(calendar.DATE, 8);
//获取年
int year = calendar.get(Calendar.YEAR);
//获取月
int month = calendar.get(Calendar.MONDAY)+1;
//获取日
int date1 = calendar.get(Calendar.DATE);
System.out.println(year+"-"+month+"-"+date1);
//获取这一年的天数
int days = Calendar.getInstance().getActualMaximum(Calendar.DAY_OF_YEAR); System.out.println("今年共"+days+"天");
//对指定日历字段的值进行加减操作//设置年
calendar.add(Calendar.YEAR, 3);
//设置月
calendar.add(Calendar.MONDAY, 2);
//设置日
calendar.add(Calendar.DATE, 25);
System.out.println(new SimpleDateFormat("yyyy年MM月dd日 hh时mm分ss秒").format(calendar.getTime()));