Date类
Java的java.util包中提供了Date类来操作日期和时间,使用Date类时,需要先创建Date类对象,Date类的构造方法及说明如下表:
构造方法 | 功能描述 |
---|---|
Date() | 分配Date对象并初始化此对象,以表示分配它的时间(精确到毫秒) |
Date(long date) | 分配Date对象并初始化此对象,以表示从标准基准时间(即1970年1月1日00:00:00 GMT)以来的指定毫秒数 |
例如,使用Date类的第二种构造方法创建一个Date类对象,代码如下:
long timeMillis = System.currentTimeMillis();
Date date = new Date(timeMillis);
上面代码中的System.currentTimeMillis()主要用来获取系统当前时间距基准时间(1970年1月1日00:00:00 GMT)的毫秒数。
Date类的常用方法说明如下表:
方法 | 返回值 | 功能描述 |
---|---|---|
after(Date when) | Boolean | 测试当前日期是否在指定的日期之后 |
before(Date when) | Boolean | 测试当前日期是否在指定的日期之前 |
getTime() | long | 获得自1970年1月1日00:00:00 GMT开始到现在所表示的毫秒数 |
setTime(long time) | void | 设置当前Date对象所表示的日期时间值,该值用以表示1970年1月1日00:00:00 GMT以后time毫秒的时间点 |
使用Date类的getTime()方法获取自1970年1月1日00:00:00 GMT开始到现在当前时间的毫秒数,代码如下:
import java.util.Date;
public class Demo {
public static void main(String[] args) {
Date date = new Date(); // 创建现在的日期
long value = date.getTime(); // 获得毫秒数
System.out.println("当前日期、时间:" + date);
System.out.println("从基准时间到当前时间所经过的毫秒数为:" + value);
}
}
返回结果;
当前日期、时间:Thu Dec 12 15:18:27 CST 2019
从基准时间到当前时间所经过的毫秒数为:1576135107907
从上面实例可以看出,如果在程序中直接输出Date对象,显示的是Thu Dec 12 15:18:27 CST 2019,那么如何将日期或者时间显示为2019-12-12或者15:18:27这样的格式呢?
为了解决上述问题,java的java.text包中提供了DateFormat类,DateFormat类的作用是按照指定格式对日期或者时间格式化,DateFormat类提供了4种默认格式化风格,即SHORT、MEDIUM、LONG、FULL
- SHORT:完全为数字,如12.13.52或3:30pm;
- MEDIUM:较长,如Jan 12,1952;
- LONG:更长,如january 12,1952或3:30pm;
- FULL:完全指定,如Tuesday、April12/1952AD或者3:20:42pmPST;
另外,使用DateFormat类还可以自定义日期、时间的格式,要自定义日期、时间格式,首先需要创建DateFormat类对象,由于DateFormat类时抽象类,因此需要使用DateFormat类的静态方法getDateInstance()创建DateFormat类对象,语法如下:
DateFormat df = DateFormat.getDateInstance();
DateFormat常用方法及说明如下表:
方法 | 返回值 | 功能描述 |
---|---|---|
format(Date date) | String | 将一个Date格式化为日期/时间字符串 |
getCalendar() | Calendar | 获取与此日期/时间格式器无关联的日历 |
getDateInstance() | static DateFormat | 获取日期格式器,该格式器具有默认语言环境的默认格式化风格 |
getDateTimeInstance() | static DateFormat | 获取日期/时间格式器,该格式器具有默认语言环境的默认格式化风格 |
getInstance() | static DateFormat | 获取SHORT风格的默认日期/时间格式器 |
getTimeInstance() | static DateFormat | 获取时间格式器,该格式器具有默认语言环境的默认格式化风格 |
parse(String source) | Date | 将字符串解析成一个日期,并返回这个日期的Date对象 |
日期格式化转换字符如下表:
字母 | 含义 |
---|---|
Y | 年 |
M | 年中的月份 |
d | 月份中的天数 |
E | 星期中的天数 |
a | Am(上午)/pm(下午)标记 |
H | 一天中的小时数 |
M | 小时中的分钟数 |
s | 分钟中的秒数 |
以下实例是格式化当前日期、和当前时间,代码如下:
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class Demo{
public static void main(String[] args) {
// 创建日期
Date date = new Date();
// 创建不同的日期格式
DateFormat df1 = DateFormat.getInstance();
DateFormat df2 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss EE");
DateFormat df3 = new SimpleDateFormat("yyyy年MM月dd日 hh时mm分ss秒 EE", Locale.CHINA);
DateFormat df4 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss EE", Locale.US);
DateFormat df5 = new SimpleDateFormat("yyyy-MM-dd");
DateFormat df6 = new SimpleDateFormat("yyyy年MM月dd日");
// 将日期按照不同格式进行输出
System.out.println("-------将日期时间按照不同格式进行输出------");
System.out.println("按照Java默认的日期格式: " + df1.format(date));
System.out.println("按照Java默认的日期格式: " + df1.format(date));
System.out.println("按照指定格式 yyyy-MM-dd hh:mm:ss EE,系统默认区域:" + df2.format(date));
System.out.println("按照指定格式 yyyy年MM月dd日 hh时mm分ss秒 EE,区域为中国 : " + df3.format(date));
System.out.println("按照指定格式 yyyy-MM-dd hh:mm:ss EE,区域为美国: " + df4.format(date));
System.out.println("按照指定格式 yyyy-MM-dd: " + df5.format(date));
System.out.println("按照指定格式 yyyy年MM月dd日: " + df6.format(date));
}
}
返回结果: