一、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 日的相同含义。

 

二、构造方法

大部分已被弃用


构造方法摘要

Date()           分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒)。

Date(int year, int month, int date)           已过时。 从 JDK 1.1 开始,由 Calendar.set(year + 1900, month, date)GregorianCalendar(year + 1900, month, date) 取代。

Date(int year, int month, int date, int hrs, int min)           已过时。 从 JDK 1.1 开始,由 Calendar.set(year + 1900, month, date, hrs, min)GregorianCalendar(year + 1900, month, date, hrs, min) 取代。

Date(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) 取代。

Date(long date)           分配 Date 对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数。

Date(String           已过时。 从 JDK 1.1 开始,由 DateFormat.parse(String s) 取代。

 

三、常用方法

     日期对象
      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( ),获取转换器实例。

static DateFormat

getDateInstance()

获取默认格式化样式为默认的 FORMAT语言环境的日期格式化 程序 。

   指定输出样式风格的获取实例方法:

static DateFormat

getDateTimeInstance(int dateStyle, int timeStyle)

获取默认的 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 中的 getTimeInstancegetDateInstancegetDateTimeInstance 来创建日期-时间格式器。每一个这样的类方法都能够返回一个以默认格式模式初始化的日期/时间格式器。可以根据需要使用 applyPattern 方法来修改格式模式。有关使用这些方法的更多信息,请参阅 DateFormat。

日期和时间模式

日期和时间格式由日期和时间模式 字符串指定。在日期和时间模式字符串中,未加引号的字母 'A''Z''a''z' 被解释为模式字母,用来表示日期或时间字符串元素。文本可以使用单引号 (') 引起来,以免进行解释。"''" 表示单引号。所有其他字符均不解释;只是在格式化时将它们简单复制到输出字符串,或者在解析时与输入字符串进行匹配。

定义了以下模式字母(所有其他字符 'A''Z''a''z' 都被保留):

字母

日期或时间元素

表示

示例

G

Era 标志符

Text

AD

y


Year

1996; 96

M

年中的月份

Month

July; Jul; 07

w

年中的周数

Number

27

W

月份中的周数

Number

2

D

年中的天数

Number

189

d

月份中的天数

Number

10

F

月份中的星期

Number

2

E

星期中的天数

Text

Tuesday; Tue

a

Am/pm 标记

Text

PM

H

一天中的小时数(0-23)

Number

0

k

一天中的小时数(1-24)

Number

24

K

am/pm 中的小时数(0-11)

Number

0

h

am/pm 中的小时数(1-12)

Number

12

m

小时中的分钟数

Number

30

s

分钟中的秒数

Number

55

S

毫秒数

Number

978

z

时区

General time zone

Pacific Standard Time; PST; GMT-08:00

Z

时区

RFC 822 time zone

-0800

演示代码:

//自定义日期输出格式
		DateFormat dateformat =new SimpleDateFormat("yyyy--mm--dd");
		
		//调用format方法  format(Date date)  将一个 Date 格式化为日期/时间字符串。
		String string = dateformat.format(date);
		
		//2019--09--30
		System.out.println(string);

下一节:字符串转成日期对象