一、Date
java.util.Date 表示特定的时间(某一个瞬间),用来表示时间和日期,提供一系列操作。
计算机标准是根据Greenwich(格林威治)标准时间(GMT),由于中国属于东八区,所以要比 GMT 时间早8个小时
类的所有方法 Date 接受或返回年,月,日,小时,分钟和秒值,以下表述中使用:
- y 年代表整数 y - 1900 。
- 一个月由0到11的整数表示; 0是1月,1是2月…11是12月
- 日期(月的一天)以通常的方式从1到31的整数表示。
- 一小时由0到23之间的整数表示。因此,从午夜到凌晨1点的时间是小时0,从中午到下
- 午1点的小时是12小时。
- 一般以0〜59的整数表示 minute 。
- 秒由0到61的整数表示; 值60和61仅发生在闰秒上,甚至仅在实际上正确跟踪闰秒的
- Java实现中发生。 由于目前引入闰秒的方式,在同一分钟内不会发生两个闰秒,但是
- 本规范遵循ISO C的日期和时间约定。
在所有情况下,为这些目的而提供的方法的论证不必在指定范围内; 例如,可以将日期指定为1月32日,并将其解释为2月1日
1.创建对象
Date date = new Date();
1.成员变量
private transient long fastTime;// 保存Date所表示的时间
2.构造方法
目前两个未弃用的方法:
构造 | 说明 |
---|---|
Date() | 分配一个 Date对象,并初始化它,当前系统时间 |
Date(long date) | 分配一个 Date对象,date毫秒。即1970年1月1日00:00:00 GMT |
例:
public Date(long millis) {
fastTime = millis ;
}
public Date() {
this(System.currentTimeMillis());//将System.currentTimeMillis()保存到fastTime
}
System.currentTimeMillis()
也是获取自1970年1月1日以来,以此日期为准的00:00:00GMT的毫秒数。
public static void main(String[] args) {
Date date = new Date();
System.out.println(date);
Date date1 = new Date(1000L);
System.out.println(date1);
}
注意: CST 表示 China Standard Time (中国标准时间)
3.成员方法
Date 中大部分方法都已经经被弃用,仅存在以下成员方法:
方法 | 返回值 | 描述 |
---|---|---|
after(Datewhen) | boolean | 测试此日期是否在指定日期之后 |
before(Datewhen) | boolean | 测试此日期是否在指定日期之前 |
clone() | object | 返回该对象的副本 |
compaerTo(Date another) | int | 比较两个日期。(anotherDate - 要比较的日期。 返回: 如果参数 Date 等于此 Date,则值为 0;如果此日期在 Date 参数之前,则为小于 0 的值;反之,大于0) |
equals(Object obj) | boolean | 比较两个日期是否相等 |
from(Instant instant) | static Date | 从 Instant 对象获取 Date 的实例 |
getTime() | long | 返回此 Date 对象表示的自 1970 年 1 月 1 日 00:00:00 GMT 以来的毫秒数。 |
hashCode() | int | 返回该对象的哈希码值。 |
setTime(long time) | void | 将此 Date 对象设置为表示 1970 年 1 月 1 日 00:00:00 GMT 之后的时间点(毫秒)。 |
toInstant() | instant | 将此 Date 对象转换为 Instant。 |
toString( ) | String | 将此 Date 对象转换 String |
其中 toString() 的格式是: dow mon dd hh:mm:ss zzz yyyy
- dow(day of week) 是星期几( Sun, Mon, Tue, Wed, Thu, Fri, Sat )。
- mon 是月( Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec )。
- dd 是一个月的某天( 01 到 31 ),作为两位十进制数字。
- hh 是一天的小时( 00 到 23 ),作为两位十进制数字。
- mm 是一小时内的分钟( 00 至 59 ),为两位十进制数字。
- ss 是分钟内的秒( 00 到 61 ),作为两位十进制数字。
- zzz 是时区。 标准时区缩写包括通过方法 parse识别的缩写 。 如果时区信息不可用,那么 zzz 是空的 - 也就是说,它根本没有字符。
- 年份 为 yyyy ,为四位十进制数字
例:
public class DateTest {
public static void main(String[] args) {
//创建date对象
//当前时间
Date date = new Date();
System.out.println(date);
//当前时间
Date date1 = new Date(System.currentTimeMillis());
System.out.println(date1);
//从1990年 0 月 0 日开始108年 9月01号
Date date2 = new Date(108, 9, 01);
System.out.println(date2);//Wed Oct 01 00:00:00 CST 2008
System.out.println(date.toLocaleString());//2023年8月27日 下午5:07:03
System.out.println(date.toGMTString());//27 Aug 2023 09:07:03 GMT
Date date4 = new Date(1000L * 60 * 60 * 24 * 365);
//比较date\date4
System.out.println(date4);//Fri Jan 01 08:00:00 CST 1971
System.out.println(date.before(date4));//false
System.out.println(date.after(date4));//true
System.out.println(date.compareTo(date4));//1
date = new Date();
;
//获取自1990年以来的年份
System.out.println(date.getYear()); // 123
//月份从0开始
System.out.println(date.getMonth()); // 7
//日期0-31日
System.out.println(date.getDate()); // 27
//一周的而第几天,周末是第0天
System.out.println(date.getDay()); // 0 dayOfWeek
//24小时制,
System.out.println(date.getHours()); // 17
//分
System.out.println(date.getMinutes()); // 28
//秒
System.out.println(date.getSeconds());//35
}
}
4.改变Date实例
Date 实例(对象)创建后,内部的毫秒值 fastTime 是可以改变的。
public static void main(String[] args) {
long ms = 1000L * 60 * 60 * 24 * 365 * 25 ;//1995
final Date birthdate = new Date(ms);
System.out.println(birthdate);//Sat Dec 25 08:00:00 CST 1999
birthdate.setTime(1000);//改变Date对象
System.out.println(birthdate);//Thu Jan 01 08:00:01 CST 1970
}
5.格式化Date对象
方法名 | 返回值类型 | 描述 |
---|---|---|
format(Date date) | String | 格式化给定的 Date 对象为字符串。 |
parse(String source) | Date | 将给定的字符串解析为 Date 对象。 |
toPattern() | String | 获取当前日期格式的模式。 |
applyPattern(String pattern) | void | 设置日期格式模式。 |
日期格式化模式字符
模式字符 | 描述 | 示例 |
---|---|---|
y | 年份,可以使用 1-4 个 y 表示不同的位数 | y 、yy 、yyy 、yyyy |
M | 月份,可以使用 1-2 个 M 表示不同的位数 | M 、MM |
d | 月份中的日期,可以使用 1-2 个 d 表示不同的位数 | d 、dd |
H | 小时数(24 小时制),可以使用 1-2 个 H 表示不同的位数 | H 、HH |
h | 小时数(12 小时制),可以使用 1-2 个 h 表示不同的位数 | h 、hh |
m | 分钟数,可以使用 1-2 个 m 表示不同的位数 | m 、mm |
s | 秒数,可以使用 1-2 个 s 表示不同的位数 | s 、ss |
S | 毫秒数,可以使用 1-3 个 S 表示不同的位数 | S 、SSS |
E | 星期几的缩写形式 | E |
EEEE | 星期几的完整形式 | EEEE |
a | 上午/下午标记 | a |
z | 时区 | z 、zzzz |