首页 > 编程语言 > 详细

Java 常用类—— JDK8之前日期时间API

时间:2021-03-14 00:15:10      阅读:24      评论:0      收藏:0      [点我收藏+]

一、日期相关常用类

    技术分享图片

 

二、获取时间戳

  System 类提供的 public static long currentTimeMillis() 用来返回当前时间与 1970 年1月1日0时0分0秒之间以毫秒为单位的时间差。

public static long currentTimeMillis():此方法适于计算时间差

    扩展:计算世界时间的主要标准有:

UTC:Coordinated Universal Time

GMT:Greenwich Mean Time

CST:Central Standard Time

    Demo:

1     @Test
2     public void test1() {
3         long time = System.currentTimeMillis();
4         //返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。
5         //称为时间戳
6         System.out.println(time);  //1615643417487
7     }

 

三、Date类

  1、java.util.Date 类

    java.util.Date 表示特定的瞬间,精确到毫秒;

    (1)构造器

Date(): 使用无参构造器创建的对象可以获取本地当前时间;
Date(long date):创建指定毫秒数的 Date 对象

 

    (2)常用方法

getTime():返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数;
toString():把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue,Wed, Thu, Fri, Sat), zzz是时间标准

 

    Demo:

 1     @Test
 2     public void test2() {
 3         Date date = new Date();   //创建一个对应当前时间的 Date 对象
 4         System.out.println(date.getTime());  //1615644029188
 5         System.out.println(date.toString()); //Sat Mar 13 22:00:29 CST 2021
 6 
 7 
 8         Date date1 = new Date(161564402000L);  //创建指定毫秒数的 Date 对象
 9         System.out.println(date1.getTime());  //161564402000
10         System.out.println(date1.toString()); //Fri Feb 14 07:00:02 CST 1975
11     }

 

  2、java.sql.Date 类

    java.sql.Date 类是 java.util.Date 类的子类,一般用于与数据库中记录的日期时间相匹配。

    (1)构造器

Date(int year, int month, int day): 使用year,month,day创建Date 对象,这里的year是与1900年的偏移量,月份从1开始累加
Date(long date):创建指定毫秒数的 Date 对象

    (2)常用方法

getTime():获取当前Date对象对应的毫秒数。(时间戳)
toString():显示当前的年、月、日、时、分、秒

 

    Demo:

 1     @Test
 2     public void test3() {
 3         java.sql.Date date = new java.sql.Date(0, 03, 13);
 4         System.out.println(date.getTime());  //-2200205143000
 5         System.out.println(date.toString()); //1900-04-13
 6 
 7 
 8         java.sql.Date date1 = new java.sql.Date(161564402000L);
 9         System.out.println(date1.getTime());  //161564402000
10         System.out.println(date1.toString()); //1975-02-14
11     }

 

  3、思考

    (1)如何将java.util.Date对象转换为java.sql.Date对象

//情况一:强转
Date date = new java.sql.Date(2343243242323L);
java.sql.Date date2 = (java.sql.Date) date;

//情况二:利用子类的构造器
Date date3 = new Date();
java.sql.Date date4 = new java.sql.Date(date3.getTime());

 

    (2)如何将java.sql.Date对象转换为java.util.Date对象

      利用多态的性质,可以将子类对象赋值给父类引用

Date date = new java.sql.Date(2343243242323L);

 

四、SimpleDateFormat 类

  1、概述

    Date 类的 API 不易于国际化,大部分被废弃了,java.text.SimpleDateFormat 类是一个不与语言环境有关的方式来格式化和解析日期的具体类。

    SimpleDateFormat 类它允许进行格式化:日期——>文本; 解析:文本——>日期;

    SimpleDateFormat对日期Date类的格式化和解析。

  2、构造器

SimpleDateFormat format = new SimpleDateFormat(); //默认的模式和语言环境创建对象
SimpleDateFormat format1 = new SimpleDateFormat(String pattern); //该构造方法可以用参数 pattern指定的格式创建一个对象,该对象调用

   说明:

            技术分享图片

  3、格式化

public String format(Date date): 方法格式化时间对象date

  4、解析

public Date parse(String source): 从给定字符串的开始解析文本,以生成一个日期。

  5、案例

 1     @Test
 2     public void test4() throws ParseException {
 3         //实例化SimpleDateFormat:使用默认的构造器
 4         SimpleDateFormat format = new SimpleDateFormat();
 5 
 6         Date date = new Date();
 7         System.out.println("date = " + date);  //Sat Mar 13 22:33:14 CST 2021
 8 
 9         //格式化:日期——>字符串
10         String dateStr = format.format(date);
11         System.out.println("dateStr = " + dateStr);  //21-3-13 下午10:33
12 
13         //解析:格式化的逆过程,字符串——>日期
14         String str = "21-3-13 下午10:33";
15         Date parseDate = format.parse(str);
16         System.out.println("parseDate = " + parseDate);  //Sat Mar 13 22:33:00 CST 2021
17 
18 
19         //按照指定的方式格式化和解析:调用带参的构造器
20         //调用带参的构造器
21         SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
22 
23         Date date1 = new Date();
24         System.out.println("date1 = " + date1);  //Sat Mar 13 22:33:52 CST 2021
25 
26         //格式化:日期——>字符串
27         String dateStr1 = format1.format(date1);
28         System.out.println("dateStr1 = " + dateStr1);  //2021-03-13 10:34:54
29 
30         //解析:格式化的逆过程,字符串——>日期
31         String str1 = "2021-03-13 10:34:54";
32         Date parseDate1 = format1.parse(str1);
33         System.out.println("parseDate1 = " + parseDate1); // Sat Mar 13 10:34:54 CST 2021
34     }

  注意:在这里会抛出异常:ParseException

  

五、Calendar日历类

  1、概述

    Calendar 是一个抽象基类,主要用于完成日期字段之间相互操作的功能。

  2、获取实例

    类的继承结构:

    技术分享图片

 

     可以看到 Calendar 是一个抽象类,那么怎么获取它的实现类呢?

    获取 Calendar 实例的方法:

Calendar calendar = Calendar.getInstance();  //调用其静态方法getInstance()
Calendar calendar = new GregorianCalendar(); //创建其子类(GregorianCalendar)的对象

  

  3、常用方法

    一个 Calendar 的实例是系统时间的抽象表示,通过get(int field) 方法来取得想要的时间信息。

    其中 field 是 Calendar 类中声明的常量:

    技术分享图片

     常用方法:

public int get(int field) 根据 filed 获取对应的值
public void set(int field, int value) 根据 filed 设置对应的值,会修改 Calendar 对象
public void add(int field, int amount) 在对应的 field 上加上对应的值 public final Date getTime() 返回 date 对象,将 Calendar 对象转换为 Date 对象 public final void setTime(date):将 date 对象转换为 Calendar对象

 

  4、案例

 1     @Test
 2     public void test5() {
 3         Calendar calendar1 = new GregorianCalendar();
 4 
 5         Calendar calendar = Calendar.getInstance();
 6 
 7         //get()
 8         int days = calendar.get(Calendar.DAY_OF_MONTH);
 9         System.out.println("days = " + days);                   //days = 13
10         System.out.println(calendar.get(Calendar.DAY_OF_YEAR)); //72
11 
12         //set() 这里会改变 Calendar 对象的属性,Calendar是可变的
13         calendar.set(Calendar.DAY_OF_MONTH, 22);
14         days = calendar.get(Calendar.DAY_OF_MONTH);
15         System.out.println("days = " + days);   //days = 22
16 
17         //add()
18         calendar.add(Calendar.DAY_OF_MONTH, -3);
19         days = calendar.get(Calendar.DAY_OF_MONTH);
20         System.out.println("days = " + days);   //days = 19
21 
22         //getTime(): 日历类——> Date
23         Date date = calendar.getTime();
24         System.out.println("date = " + date);  //date = Fri Mar 19 23:04:41 CST 2021
25 
26         //setTime(): Date ——> 日历类
27         Date date1 = new Date();
28         calendar.setTime(date1);
29         days = calendar.get(Calendar.DAY_OF_MONTH);
30         System.out.println("days = " + days);  //days = 13
31     }

 

   注意

    ① 获取月份时,一月是 0,二月是1,以此类推,12月是11

    ② 获取星期时:周日是1,周一是2... 周六是 7

 

Java 常用类—— JDK8之前日期时间API

原文:https://www.cnblogs.com/niujifei/p/14530931.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!