一、API 说明
类 Date
表示特定的瞬间,精确到毫秒。
在类 Date
所有可以接受或返回年、月、日期、小时、分钟和秒值的方法中,将使用下面的表示形式:
- 年份 y 由整数 y
- 1900
表示。 - 月份由从 0 至 11 的整数表示;0 是一月、1 是二月等等;因此 11 是十二月。
- 日期(一月中的某天)按通常方式由整数 1 至 31 表示。
- 小时由从 0 至 23 的整数表示。因此,从午夜到 1 a.m. 的时间是 0 点,从中午到 1 p.m. 的时间是 12 点。
- 分钟按通常方式由 0 至 59 的整数表示。
- 秒由 0 至 61 的整数表示;值 60 和 61 只对闰秒发生,尽管那样,也只用在实际正确跟踪闰秒的 Java 实现中。于按当前引入闰秒的方式,两个闰秒在同一分钟内发生是极不可能的,但此规范遵循 ISO C 的日期和时间约定。
在所有情形中,针对这些目的赋予方法的参数不需要在指定的范围内;例如,可以把日期指定为 1 月 32 日,并把它解释为 2 月 1 日的相同含义。
二、构造方法
大部分已被弃用
构造方法摘要 | |
| |
| |
| |
| |
| |
|
三、常用方法
日期对象
3.1 日期对象和毫秒值之间的转换
毫秒值--->日期对象
1、通过Date对象的构造方法, new Date(time)
2、还可以通过setTime();
因为还可以通过Date对象中的方法对该日期中的各个字段(年月日)等进行操
日期对象-->毫秒值
2、getTime()方法
可以通过具体的数值进行计算
演示代码:
private static void MethodDemo_1() {
//获取当前系统时间毫秒值
long time=System.currentTimeMillis();
//System.out.println(time);//1564147968016
//Date
Date date=new Date();
System.out.println(date);//将当前日期和时间封装成Date对象
Date date2=new Date(1564147968016l); //将指定毫秒值封装成Date对象
System.out.println(date2);
}
3.2 对日期对象进行格式化输出
3.2.1 将日期对象--->日期格式的字符串。使用的是DateFormat类中的format方法。由于DateFormat是抽象的,所以不能直接创建实例,只能利用getDateInstance( ),获取转换器实例。
|
获取默认格式化样式为默认的 FORMAT语言环境的日期格式化 程序 。 |
指定输出样式风格的获取实例方法:
|
获取默认的 FORMAT区域设置的给定日期和时间格式化样式的日期/时间格式化 程序 。 |
DateFormat.LONG 是显示的一种样式,还有FULL、Short等,具体可查看API 中DateFormat字段摘要
演示代码:
private static void MethodDemo_2() {
Date date = new Date();
//日期格式对象,指定输出风格
DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.LONG);
//时间格式对象,
//2019年12月30日 下午03时45分52秒
dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG);
String str_date = dateFormat.format(date);
//2019年12月30日
System.out.println(str_date);
}
3.3 对日期格式进行自定义日期格式的输出
通过DaFormat的子类SimpleDateFormat。
SimpleDateFormat
是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。
SimpleDateFormat
使得可以选择任何用户定义的日期-时间格式的模式。但是,仍然建议通过 DateFormat
中的 getTimeInstance
、getDateInstance
或 getDateTimeInstance
来创建日期-时间格式器。每一个这样的类方法都能够返回一个以默认格式模式初始化的日期/时间格式器。可以根据需要使用 applyPattern
方法来修改格式模式。有关使用这些方法的更多信息,请参阅 DateFormat。
日期和时间模式
日期和时间格式由日期和时间模式 字符串指定。在日期和时间模式字符串中,未加引号的字母 'A'
到 'Z'
和 'a'
到 'z'
被解释为模式字母,用来表示日期或时间字符串元素。文本可以使用单引号 ('
) 引起来,以免进行解释。"''"
表示单引号。所有其他字符均不解释;只是在格式化时将它们简单复制到输出字符串,或者在解析时与输入字符串进行匹配。
定义了以下模式字母(所有其他字符 'A'
到 'Z'
和 'a'
到 'z'
都被保留):
字母 | 日期或时间元素 | 表示 | 示例 |
| Era 标志符 | Text |
|
| 年 | Year |
|
| 年中的月份 | Month |
|
| 年中的周数 | Number |
|
| 月份中的周数 | Number |
|
| 年中的天数 | Number |
|
| 月份中的天数 | Number |
|
| 月份中的星期 | Number |
|
| 星期中的天数 | Text |
|
| Am/pm 标记 | Text |
|
| 一天中的小时数(0-23) | Number |
|
| 一天中的小时数(1-24) | Number |
|
| am/pm 中的小时数(0-11) | Number |
|
| am/pm 中的小时数(1-12) | Number |
|
| 小时中的分钟数 | Number |
|
| 分钟中的秒数 | Number |
|
| 毫秒数 | Number |
|
| 时区 | General time zone |
|
| 时区 | RFC 822 time zone |
|
演示代码:
//自定义日期输出格式
DateFormat dateformat =new SimpleDateFormat("yyyy--mm--dd");
//调用format方法 format(Date date) 将一个 Date 格式化为日期/时间字符串。
String string = dateformat.format(date);
//2019--09--30
System.out.println(string);
下一节:字符串转成日期对象