Date类
Date表示特定的瞬间,精确到毫秒。Date类中的大部分方法都已经被Calendar类中的方法所取代。
Date类中的构造方法:
方法名 | 描述 |
---|---|
Date() | 分配Date对象并初始化此对象,以表示分配它的时间(精确到毫秒)。 |
Date(long date) | 分配Date对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数。 |
Date类中常用普通方法:
Date date1 = new Date();//获取当前系统时间
Date date2 = new Date(10000);//获取从标准基准时间起10000毫秒的时间点
boolean boo1 = date1.after(date2);//若date1在date2之后,则返回true,否则返回false
boolean boo2 = date1.before(date2);//若date1在date2之前,则返回true,否则返回false
//比较两个日期对象
Date date1 = new Date();
Date date2 = new Date(10000);
int i = date1.compareTo(date2);
//获取时间毫秒值
Date date = new Date();
long l = date.getTime();
//修改时间
Date date = new Date();
date.setTime(1000);
Calendar类
Calendar类是一个抽象类,它为特定瞬间与一组诸如YEAR、MONTH、DAY_OF_MONTH、HOUR
等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。
Calendar类时抽象类不能创建对象,可以通过Calendar类中的静态getInstance方法获取对象(一个非抽象子类对象)。
Calendar类中的常用静态常量属性:
属性 | 描述(这些都是特定与日历的值) |
---|---|
public static final int YEAR | 指示年的字段数字 |
public static final int MONTH | 指示月份的字段数字 ,月份从0开始计算 |
public static final int DATE | 指示一个月中的某天 |
public static final int DAY_OF_MONTH | 指示一个月中的某天 |
public static final int DAY_OF_WEEK | 指示一周中的某天 |
public static final int DAY_OF_WEEK_IN_MONTH | 指示当月中的第几个星期 |
public static final int DAY_OF_YEAR | 指示一年中的某天 |
常用方法
//获取具体时间字段
calendar.set(Calendar.YEAR, 2020); //甚至年份为2020
int year = calendar.get(Calendar.YEAR); //获取年
int month = calendar.get(Calendar.MONTH) + 1;//获取月份,从0计数,所以加1
calendar.set(Calendar.MONTH, 1); //设置月份
int date1 = calendar.get(Calendar.DAY_OF_MONTH); //获取月份中的某天
int hour = calendar.get(Calendar.HOUR_OF_DAY); //获取小时
int minutes = calendar.get(Calendar.MINUTE); //获取分钟
int seconds = calendar.get(Calendar.SECOND); //获取秒
Calendar c = Calendar.getInstance(TimeZone.getTimeZone("GMT+08:00")); // 获取东八区时间
//获取和设置时间,以下方法返回值都是void,说明这意味着当前Calendar的对象是可变的
//表示当前时间,输出结果为:Sat Feb 22 21:32:31 CST 2020
calendar.getTime();
//获取当前时间毫秒值
calendar.getTimeInMillis();
//给当前时间加一个月或减去一个月
calendar.add(Calendar.MONTH, 1);
calendar.add(Calendar.MONTH, -1);
//获取当下日期是星期几,周日为1,周六为7
calendar.get(Calendar.DAY_OF_WEEK);
//设置年份、月份和date
calendar.set(Calendar.YEAR, 2020);
calendar.set(Calendar.MONTH, 1);
calendar.set(Date date);
//返回日历字段最大值和最小值,以31最大
System.out.println(calendar.getMinimum(Calendar.DATE));
System.out.println(calendar.getMaximum(Calendar.DATE));
//返回实际最大值和最小值,以当前月份为基准,2月在平年最大28【常用】
System.out.println(calendar.getActualMaximum(Calendar.DATE));
System.out.println(calendar.getActualMinimum(Calendar.DATE));
//按照yyyy-MM-dd HH:mm:ss格式输出
calendar.getTime().toLocaleString()
日期格式化类
//获取毫秒值,并传给Date
Date date = new Date(Calendar.getInstance().getTimeInMillis());
//设置格式
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//传入毫秒值,格式化
String format = dateFormat.format(date);
//反向解析,按照设定的格式对字符串解析为date
Date parse = dateFormat.parse("2020年12月31日 20:22:45");
日期参照格式表