Java Date类详解及使用总结
什么是Java Date类
在Java中,Date类代表了一个日期或者时间的抽象概念。Date类中包含了当前日期和时间的信息,可以通过它来进行日期和时间的操作。
Date类的构造方法
Date类有下面三个构造方法:
public Date()
创建一个表示当前时间的Date对象。
public Date(long date)
创建一个表示从1970年1月1日00:00:00 GMT(格林威治标准时间)开始经过指定毫秒数的Date对象。
public Date(String s)
根据参数s所代表的日期和时间字符串,创建一个Date对象。s参数的格式必须为“ddd mmm dd hh:mm:ss zzz yyyy”,其中:
- ddd:表示星期几(英文的缩写),有三个字母;
- mmm:表示月份(英文的缩写),有三个字母;
- dd:表示日期,有两位数字;
- hh:表示小时,有两位数字;
- mm:表示分钟,有两位数字;
- ss:表示秒,有两位数字;
- zzz:表示时区,有一个或两个字母;
- yyyy:表示年份,有四位数字。
构造方法举例:
java
Date date1 = new Date();
Date date2 = new Date(1596864000000L); //等效于写成Date date2 = new Date("Thu Aug 08 00:00:00 CST 2020");
Date date3 = new Date("Thu Aug 08 00:00:00 CST 2020");
Date类的常用方法
public boolean after(Date when)
判断当调用该方法的Date对象是否在参数when之后,如果是,则返回true,否则返回false。
java
Date date1 = new Date(1596864000000L);
Date date2 = new Date(1599888000000L);
boolean result = date1.after(date2); //false
System.out.println(result);
public boolean before(Date when)
判断当调用该方法的Date对象是否在参数when之前,如果是,则返回true,否则返回false。
java
Date date1 = new Date(1596864000000L);
Date date2 = new Date(1599888000000L);
boolean result = date1.before(date2); //true
System.out.println(result);
public int compareTo(Date anotherDate)
比较当前的Date对象和参数anotherDate表示日期的Date对象的顺序,如果当前Date对象早于参数anotherDate,返回负数;如果当前Date对象晚于参数anotherDate,返回正数;如果两个Date对象相等,返回0。
java
Date date1 = new Date(1596864000000L);
Date date2 = new Date(1599888000000L);
int result = date1.compareTo(date2); //-1
System.out.println(result);
public boolean equals(Object obj)
比较当前的Date对象和参数obj代表的对象是否相等。如果obj不是Date对象,返回false;如果当前Date对象和参数obj表示的日期相等,返回true;否则,返回false。
java
Date date1 = new Date(1596864000000L);
Date date2 = new Date(1596864000000L);
boolean result = date1.equals(date2); //true
System.out.println(result);
public long getTime()
返回当前Date对象表示的日期和时间与1970年1月1日0时0分0秒之间相差的毫秒数。
java
Date date = new Date(1596864000000L);
long result = date.getTime(); //1596864000000
System.out.println(result);
public void setTime(long time)
设置当前Date对象表示的日期和时间与1970年1月1日0时0分0秒之间相差的毫秒数。
java
Date date = new Date(1596864000000L);
date.setTime(1599888000000L);
System.out.println(date); //Tue Sep 22 00:00:00 CST 2020
Date类的缺点
Date类存在线程安全的问题,所以在实际开发中不建议使用Date类。Java 8之后,引入了新类LocalDateTime、ZonedDateTime等来解决Date类的这个问题。
示例
示例1:比较两个日期的大小,找出较早的日期
Date date1 = new Date(1596864000000L);
Date date2 = new Date(1599888000000L);
Date minDate = date1.before(date2) ? date1 : date2;
System.out.println(minDate); //Fri Aug 08 00:00:00 CST 2020
示例2:获取当前时间并转换成指定格式的字符串
import java.text.SimpleDateFormat;
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String result = sdf.format(date);
System.out.println(result); //2022-09-01 15:55:20
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java Date类详解及使用总结 - Python技术站