美文网首页
21 时间日期类

21 时间日期类

作者: ca8519be679b | 来源:发表于2020-03-02 10:57 被阅读0次

Date类

java.util.Date类,需要导包,表示时间点,精确到毫秒

时间原点1970-1-1 00:00:00.000GMT,

所以计算当前时间就是计算从时间原点到当前的经历了多少毫秒

1

如上,我们可以使用System.currentTimeMillis()获取系统当前经过的毫秒数,这里需要注意的是中国是东八区,会把时间增加8个小时

简单介绍时间后,我们介绍Date的构造方法和成员方法

Date类构造方法

2

看文档可以得到无参,年月日,年月日时分,年月日时分秒,以及date毫秒值初始化构造

date()无参构造获得的是当前时间,如下,其中CST表示的是中国标准时间

3

Date(long date)构造,如下基于毫秒值给的构造,这里我们传入0,表示是时间原点,这里因为是东八区,所以+8小时

4

对于年月日时分秒这些,相信不难,我们就不一一详解

Date类成员方法

getTime()方法,获得实例的毫秒数

5

其他方法我们查看文档发现好多被Calendar替代,我们后面就会讲到


DateFormat类

是格式化的日期时间类,我们可以通过这个类将时间与字符串进行互相转换,我们查看文档,可以知道其是个抽象类,在java.text下,其父类为Format类,这个类有3个子类,一个是我们要讲的时间格式化类,另两个是字符串格式化类和数字格式化类

6

成员方法里2个比较常用的是format方法(下图的第一个),输入Date类,输出String类

7

还有parse方法,输入字符串,输出Date类型

8

由于是抽象类,我们无法直接使用

9

我们使用子类的SimpleDateFormat来实例,实例需要传入Pattern模式字符串

相关事件字母模式y年,M月,d日,时H,分m,秒s(里面月和小时是大写)

如输出"yyyy-MM-dd"就是格式化年月日-连接

format方法

10

如上,我们给SimpleDateFormat传入模式字符串,然后尝试打印date(0)参数的日期,显示如上,即时间原点信息

11

当然我们pattern是可以自己设置的,如上

parse方法

parse方法使用,也是先实例化传入pattern字符串,然后调用parse方法,也许我们就信誓旦旦的去调用了,但是这里却出现了异常

12

这是其本身的问题,因为解析时调用java的文本异常解析类需要添加导入,感觉不是那么智能- -

13

还好intelliJ帮我们解决了,点击灯泡选择第一个即可,

14

这样我们就能正常解析了,我们这么繁琐的添加是因为我们如果输入了模式不匹配的字符串,就会能准确报出异常

15

如上,我们输入少了日,结果就会报出解析异常

一个小练习,输入生日,计算当前过了多少天

16

Calendar日历类

我们之前说了Date类很多方法jdk1.1以后都被Calendar类取代了,这里就是重点获得其方法

17

其在java.util下,是个抽象类,虽然也有子类,但是我们使用方法时常常使用

Calendar rightNow = Calendar.getInstance();  来获得子类对象(多态写法)

其方法和属性在文档里可以看到

18

如上,我们打印子类实例,可以看到其toString是复写的,显示的是各种日历信息,如当前毫秒数,时区,偏置毫秒数,等等

java.util.GregorianCalendar[time=1583114835650,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2020,MONTH=2,WEEK_OF_YEAR=10,WEEK_OF_MONTH=1,DAY_OF_MONTH=2,DAY_OF_YEAR=62,DAY_OF_WEEK=2,DAY_OF_WEEK_IN_MONTH=1,AM_PM=0,HOUR=10,HOUR_OF_DAY=10,MINUTE=7,SECOND=15,MILLISECOND=650,ZONE_OFFSET=28800000,DST_OFFSET=0]

19

Calendar类有4种常用方法,如上,获得日历的字段值,设置字段值,给字段值添加删除量,返回Date对象

20

我们需要注意的是使用Calendar类的字段,必须知道其字段值int类型,如上,年月日时分秒分别为1,2,5,10,12,13

get方法

21

如上,这里需要注意的西方月份是0-11,我们这里需要转换+1

22

当然,日历类Calendar对于这些常量值是静态属性存储的,我们可以获得其值,通过IDE,因为有时候不记得具体多少

23

我们常常有要求获取一年第几天,这里也有专门的字段

set方法

24 25

当然这里设置超出范围的值会自动转换,如上,我开门设置日为32号,当前为3月(老外-1)会自动变成4月1日

26

当然set方法也是支持多值的

add方法

27

如上是增加方法,传入负值即递减

28

如上,1月1日(老外0月1日)减1天到去年的12月31日(老外11月31日)

相关文章

  • 21 时间日期类

    Date类 java.util.Date类,需要导包,表示时间点,精确到毫秒 时间原点1970-1-1 00:00...

  • 日期类时间类

    //计算两日期相差天数 function DateDiff(sDate1, sDate2) { //sDate1和...

  • 日期/时间类

    1)获取毫秒数 2)Date类 3)SimpleDateFormat ---SimpleDateFormat s...

  • 日期时间类

    Date类 概述 java.util.Date类 表示特定的瞬间,精确到毫秒。 继续查阅Date类的描述,发现Da...

  • 时间日期类

    date 指令(显示当前时间)datedate "+%Y-%m-%d %H:%M:%S" 自定义输出的格式 ...

  • 时间、日期工具类

  • java8 新日期和时间api

    1、新的日期类 LocalDate 2、新的时间类 LocalTime 3、新的日期时间类 LocalDateTi...

  • Java中日期与时间相关类用法解析

    Date类 Date类主要用来获取当前的日期与时间 Calendar类 Calendar类是专用的日期和时间处理类...

  • 日期时间工具类LocalDateTime()

    一. 概述 以前在java处理时间, 我们都是用Date(), 但Date()在高并发中不安全, java8后推荐...

  • 新的日期时间类

    为什么要引入新的日期时间类?java.util.Date 缺陷:只能以毫秒表示时间,并且年份是从1900年开始,月...

网友评论

      本文标题:21 时间日期类

      本文链接:https://www.haomeiwen.com/subject/xqefkhtx.html