日期时间类
日期时间类
Date类
java.util.Date
,表示特定的瞬间,精确到毫秒。
构造方法
从JDK1.1开始,就只保留了以下两种构造方法:
Date()
不用多说,new 出来的 Date 就是当前时间。Date(long date)
分配 Date 对象并初始化此对象,入参为从历元(即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数。
Date类常用方法
序号 | 方法 | 描述 |
---|---|---|
1 | boolean after(Date date) | 若当调用此方法的Date对象在指定日期之后返回true,否则返回false |
2 | boolean before(Date date) | 若当调用此方法的Date对象在指定日期之前返回true,否则返回false |
3 | int compareTo(Date date) | 比较当调用此方法的Date对象和指定日期。两者相等时候返回0。调用对象在指定日期之前则返回负数。调用对象在指定日期之后则返回正数 |
4 | boolean equals(Object date) | 当调用此方法的Date对象和指定日期相等时候返回true,否则返回false |
5 | long getTime() | 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数 |
6 | void setTime(long time) | 用时间戳设置时间和日期 |
7 | String toString() | 把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat) |
日期比较
可以使用以下三种方法对两个日期进行比较:
- 使用
getTime()
方法获取两个日期(自1970年1月1日经历的毫秒数值),然后比较这两个值 - 使用方法
before()
,after()
和equals()
。例如,一个月的12号比18号早,则:
new Date(99, 2, 12).before(new Date (99, 2, 18)) //返回true
- 使用
compareTo()
方法,它是由Comparable
接口定义的,Date 类实现了这个接口。
获取一个指定时间的Date对象
可以使用Calendar
的getTime()
方法,返回一个表示此 Calendar 时间值(从历元至现在的毫秒偏移量)的 Date 对象。
后面有讲。
Calendar类
我们现在已经能够格式化并创建一个日期对象了,但是我们如何才能设置和获取日期数据的特定部分呢,比如说小时,日,或者分钟? 我们又如何在日期的这些部分加上或者减去值呢? 答案是使用Calendar类。
java.utiI.Calendar
,是一个抽象类,
用于设置和获取日期/时间数据的特定部分。
Calendar类提供一些方法和静态字段来操作日历。
获取Calendar对象
Calender是抽象类,所以不能被实例化,可以使用Calendar的getInstance()
方法获取Calendar对象:
Calendar calendar = Calendar.getInstance(); //默认是当前日期
Calendar常用方法
序号 | 方法 | 描述 |
---|---|---|
1 | int get(int field) | 返回给定日历字段的值,参数为常量,可以得到:年、月、日、小时、分钟、星期几 |
2 | void set(int year, int month, int date) | 设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值 |
3 | void set(int year, int month, int date, int hourOfDay, int minute) | 设置日历字段 YEAR、MONTH、DAY_OF_MONTH、HOUR_OF_DAY 和 MINUTE 的值 |
4 | void set(int year, int month, int date, int hourOfDay, int minute, int second) | 设置字段 YEAR、MONTH、DAY_OF_MONTH、HOUR、MINUTE 和 SECOND 的值 |
5 | void setTime(Date date) | 使用给定的 Date 设置此 Calendar 的时间 |
6 | Date getTime() | 返回一个表示此 Calendar 时间值的 Date 对象 |
7 | void add(int field, int amount) | 根据日历的规则,为给定的日历字段添加或减去指定的时间量 |
8 | int getActualMaximum(int field) | 返回当前月份的天数,参数为Calendar.DATE |
Calendar常量
常量 | 描述 |
---|---|
Calendar.YEAR | 年 |
Calendar.MONTH | 月 |
Calendar.DAY_OF_MONTH | 日 |
Calendar.DATE | 日,和Calendar.DAY_OF_MONTH完全相同 |
Calendar.HOUR | 小时(12小时制) |
Calendar.HOUR_OF_DAY | 小时(24小时制) |
Calendar.MINUTE | 分钟 |
Calendar.SECOND | 秒 |
Calendar.DAY_OF_WEEK | 星期几 |
Calendar类对象信息的获得
Calendar calendar=Calendar.getInstance();
int year=calendar.get(Calendar.YEAR);
int month=calendar.get(Calendar.MONTH)+1;
int day=calendar.get(Calendar.DAY_OF_MONTH);
int hour=calendar.get(Calendar.HOUR_OF_DAY);
int minute=calendar.get(Calendar.MINUTE);
int second=calendar.get(Calendar.SECOND);
int week=calendar.get(Calendar.DAY_OF_WEEK)-1;
System.out.println("现在是:"+year+"年"+month+"月"+day+"日 "+hour+":"+minute+":"+second+" 星期"+week);
//现在是:2017年12月31日 15:57:39 星期0
//-1之后,0表示星期日
给Calendar对象设置指定日期
Calendar calendar=Calendar.getInstance();
//设置为:2017年10月1日 22:59:59
//在设置时间是,月要-1
calendar.set(2017,10-1,1,22,59,59);
使用add()方法修改时间
//今天
Calendar calendar=Calendar.getInstance();
int year=calendar.get(Calendar.YEAR);
int month=calendar.get(Calendar.MONTH)+1;
int day=calendar.get(Calendar.DAY_OF_MONTH);
int week=calendar.get(Calendar.DAY_OF_WEEK)-1;
String[] currentDay={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
System.out.println("今天是:"+year+"年"+month+"月"+day+"日 "+currentDay[week]); //今天是:2017年12月31日 星期日
//1天后
calendar.add(Calendar.DAY_OF_MONTH,+1); //往后推移一天
year=calendar.get(Calendar.YEAR);
month=calendar.get(Calendar.MONTH)+1;
day=calendar.get(Calendar.DAY_OF_MONTH);
week=calendar.get(Calendar.DAY_OF_WEEK)-1;
System.out.println("明天是:"+year+"年"+month+"月"+day+"日 "+currentDay[week]); //明天是:2018年1月1日 星期一
获取当月的天数
Calendar calendar=Calendar.getInstance();
int year=calendar.get(Calendar.YEAR);
int month=calendar.get(Calendar.MONTH)+1;
System.out.println("今天是:"+year+"年"+month+"月");
System.out.println("本月一共有"+calendar.getActualMaximum(Calendar.DAY_OF_MONTH)+"天");
SimpleDateFormat类
使用SimpleDateFormat格式化日期
Date date=new Date();
System.out.println(date); //Sun Dec 31 15:00:08 CST 2017
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(format.format(date)); //2017-12-31 15:00:08
format=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss a zzz");
System.out.println(format.format(date)); //2017-12-31 03:00:08 PM CST
### Calendar类