Java Date

在java.util包里

表示特定的瞬间,精确到毫秒

Java Date 类提供的方法

boolean after(Date when)
测试此日期是否在指定日期之后。
boolean before(Date when)
测试此日期是否在指定日期之前。
Object clone()
返回此对象的副本。
int compareTo(Date anotherDate)
比较两个日期的顺序。
boolean equals(Object obj)
比较两个日期的相等性。
int getDate()
已过时。 从 JDK 1.1 开始,由 Calendar.get(Calendar.DAY_OF_MONTH) 取代。
int getDay()
已过时。 从 JDK 1.1 开始,由 Calendar.get(Calendar.DAY_OF_WEEK) 取代。
int getHours()
已过时。 从 JDK 1.1 开始,由 Calendar.get(Calendar.HOUR_OF_DAY) 取代。
int getMinutes()
已过时。 从 JDK 1.1 开始,由 Calendar.get(Calendar.MINUTE) 取代。
int getMonth()
已过时。 从 JDK 1.1 开始,由 Calendar.get(Calendar.MONTH) 取代。
int getSeconds()
已过时。 从 JDK 1.1 开始,由 Calendar.get(Calendar.SECOND) 取代。
long getTime()
返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
int getTimezoneOffset()
已过时。 从 JDK 1.1 开始,由 -(Calendar.get(Calendar.ZONE_OFFSET) + Calendar.get(Calendar.DST_OFFSET)) / (60 * 1000) 取代。
int getYear()
已过时。 从 JDK 1.1 开始,由 Calendar.get(Calendar.YEAR) - 1900 取代。
int hashCode()
返回此对象的哈希码值。
static long parse(String s)
已过时。 从 JDK 1.1 开始,由 DateFormat.parse(String s) 取代。
void setDate(int date)
已过时。 从 JDK 1.1 开始,由 Calendar.set(Calendar.DAY_OF_MONTH, int date) 取代。
void setHours(int hours)
已过时。 从 JDK 1.1 开始,由 Calendar.set(Calendar.HOUR_OF_DAY, int hours) 取代。
void setMinutes(int minutes)
已过时。 从 JDK 1.1 开始,由 Calendar.set(Calendar.MINUTE, int minutes) 取代。
void setMonth(int month)
已过时。 从 JDK 1.1 开始,由 Calendar.set(Calendar.MONTH, int month) 取代。
void setSeconds(int seconds)
已过时。 从 JDK 1.1 开始,由 Calendar.set(Calendar.SECOND, int seconds) 取代。
void setTime(long time)
设置此 Date 对象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以后 time 毫秒的时间点。
void setYear(int year)
已过时。 从 JDK 1.1 开始,由 Calendar.set(Calendar.YEAR, year + 1900) 取代。
String toGMTString()
已过时。 从 JDK 1.1 开始,由 DateFormat.format(Date date) 取代,使用 GMT TimeZone。
String toLocaleString()
已过时。 从 JDK 1.1 开始,由 DateFormat.format(Date date) 取代。
String toString()
把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)。
static long UTC(int year, int month, int date, int hrs, int min, int sec)
已过时。 从 JDK 1.1 开始,由 Calendar.set(year + 1900, month, date, hrs, min, sec) 或 GregorianCalendar(year + 1900, month, date, hrs, min, sec) 取代,使用 UTC TimeZone,后跟 Calendar.getTime().getTime()。

Java Date 初始化示例

public class Test
{
	public static void main(String[] args) {
		Date now = new Date();
		System.out.println("当前时间 + " + now);
		System.out.println("当前时间的时间戳 + " + now.getTime());
	}
}

运算结果为

当前时间 + Sun Jul 26 11:57:45 CST 2020
当前时间的时间戳 + 1595735865183

Java 日期格式化 DateFormat SimpleDateFormat

public class Test
{
	public static void main(String[] args) {
		Date now = new Date();
		System.out.println("当前时间 + " + now);
		System.out.println("当前时间的时间戳 + " + now.getTime());

		//DateUtils.convertDate(parttern, dateString)
		//调用格式方法
		System.out.println("不指定格式 : " + new SimpleDateFormat().format(now));
		System.out.println("指定格式 (yyyyMMddHHmmss): " + new SimpleDateFormat("yyyyMMddHHmmss").format(now));
		System.out.println("指定格式 (yyyy-MM-dd HH:mm:ss): " + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(now));
		System.out.println("指定格式 (yyyyMMdd): " + new SimpleDateFormat("yyyyMMdd").format(now));
		System.out.println("指定格式 (yyyy-MM-dd): " + new SimpleDateFormat("yyyy-MM-dd").format(now));
		System.out.println("指定格式 (HH:mm:ss): " + new SimpleDateFormat("HH:mm:ss").format(now));
	}
}

运算结果为

当前时间 + Sun Jul 26 12:12:04 CST 2020
当前时间的时间戳 + 1595736724806
不指定格式 : 20-7-26 下午12:12
指定格式 (yyyyMMddHHmmss): 20200726121204
指定格式 (yyyy-MM-dd HH:mm:ss): 2020-07-26 12:12:04
指定格式 (yyyyMMdd): 20200726
指定格式 (yyyy-MM-dd): 2020-07-26
指定格式 (HH:mm:ss): 12:12:04

DateFormat SimpleDateFormat 这个是非线程安全,多线程并发会有问题! 因此我们往往直接加入synchronized,但是这样缺点自然就是并发量大的时候会对性能有影响, 线程阻塞。

jdk1.8之后,建议使用LocalDateTime,

具体使用 DateTimeFormatter