Java 日期时间
Java日期涉及几大类
1. java.util.Date
- Date类负责时间的表示,在计算机中,时间的表示是一个较大的概念,现有的系统基本都是利用从1970.1.1 00:00:00 到当前时间的毫秒数进行计时,这个时间称为epoch。在后文中如果没有明确说明,毫秒数就是指从1970年到对应时间的毫秒数。在Java 的Date类内部其实也是一个毫秒数,对外表现为一个Date对象。
Date类方法
- Date()
- 分配一个 Date对象,并初始化它,以便它代表它被分配的时间,测量到最近的毫秒。
- Date(long date)
- 分配一个 Date对象,并将其初始化为表示自称为“时代”的标准基准时间以后的指定毫秒数,即1970年1月1日00:00:00 GMT。
- void setTime(long date)
- 使用给定的毫秒时间值设置现有的 Date对象。
- void setTime(long time)
- 设置此 Date对象以表示1970年1月1日00:00:00 GMT后的 time毫秒的时间点。
- Instant toInstant()
- 此方法总是引发UnsupportedOperationException,因为SQL Date值没有时间组件,所以不应该使用。
- LocalDate toLocalDate()
- 将此 Date对象转换为 LocalDate
- String toString()
- 格式化日期转义格式yyyy-mm-dd。
- static Date valueOf(LocalDate date)
- 从一个LocalDate对象获取一个Date的实例,具有与给定的LocalDate相同的年,月和日的月值。
- static Date valueOf(String s)
- 将JDBC日期转义格式的字符串转换为 Date值。
- boolean after(Date when)
- 测试此日期是否在指定日期之后。
- boolean before(Date when)
- 测试此日期是否在指定日期之前。
- Object clone()
- 返回此对象的副本。
- int compareTo(Date anotherDate)
- 比较两个日期进行订购。
- boolean equals(Object obj)
- 比较两个日期来平等。
- static Date from(Instant instant)
- 从 Instant对象获取一个 Date的实例。
- long getTime()
- 返回自1970年1月1日以来,由此 Date对象表示的00:00:00 GMT的毫秒 数 。
- int hashCode()
- 返回此对象的哈希码值。
1 | //常用几个方法使用 |
2.java.util.Calendar(抽象类)
- Calendar类说是一个工具类,其实它比工具类还是更深一步的,它更像是一个加强版的Date类。一般的工具类会提供一堆static方法,工具类本身并不存储对象。但是Calendar类不是像一般的工具类只提供一堆static方法,而是在其内部本身就有一个毫秒数,所以它不是对外部Date对象操作,而是对内部的毫秒数进行转化,所以说Calendar本身就包含了日期时间信息,像一个装饰者模式。
- Calendar本身是一个抽象类,不能直接实例化,但是Calendar类提供一个工厂方法,即getInstance来创建一个Calendar实例,通过setTime()设定一个Calendar内部的毫秒数,之后就可以对这个毫秒数进行分析,进而得到它的年月日信息。同时,我们也可以对Calendar直接设定年月日属性,从而获取对应的Date对象。
- GregorianCalendar 是 Calendar 的一个具体子类,提供了世界上大多数国家使用的标准日历系统。结合Calendar抽象类使用。
Calendar类对象字段类型
常量 | 描述 |
---|---|
Calendar.YEAR | 年份 |
Calendar.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的星期是从周日开始的,常量值为0。
- Calendar的月份是从一月开始的,常量值为0。
- Calendar的每个月的第一天值为1。
- 常用方法示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21public static void main(String[] args) {
/*
* static Calendar getInstance()
* 根据当前系统所在地区获取一个适用的实现类
* 通常返回的就是GregorianCalendar
*/
Calendar calendar = Calendar.getInstance();
System.out.println(calendar);
/*
* Date getTime()
* 将当前Calendar的表示的时间一个Date实例形式返回。
*/
Date date = calendar.getTime();
System.out.println(date);
/*
* void setTime()
* 调整当前calendar的时间为给定的Date所表示的时间。
*/
calendar.setTime(date);
}
1 | package date; |
1 | package date; |
1 | package date; |