Dete类,Calendar类,Clock类,Instant类,Localtime类,Duration类,LocalDate类,Period类的特性(1)

一、各类的优缺点

1. Date类 优点:简单易用,可以进行基本的日期和时间计算。

                缺点:已经过时,精度只能到毫秒级别,不支持时区设置。

2. Calendar类 优点:可以进行日期和时间的计算,支持时区设置,精度可以到纳秒级别。

                         缺点:代码复杂,易出错,不够直观。

3. Clock类 优点:提供了可靠的时钟,可以获取当前时间和日期,支持时区设置。

                  缺点:不能进行日期和时间的计算。

4. Instant类 优点:提供了可靠的时钟,可以获取当前时间和日期,支持时区设置,精度可以到纳秒级别。

                     缺点:不能进行日期和时间的计算。

5. LocalTime类 优点:可以表示时间,支持时间的计算和格式化输出。                   

                          缺点:不能表示日期,不支持时区设置。

6. Duration类 优点:可以表示时间的持续时间,支持时间的计算和格式化输出。

                       缺点:不能表示日期,不支持时区设置。

7. LocalDate类 优点:可以表示日期,支持日期的计算和格式化输出。                 

                          缺点:不能表示时间,不支持时区设置。

8. Period类 优点:可以表示日期的持续时间,支持日期的计算和格式化输出。

                  缺点:不能表示时间,不支持时区设置。

(1)Dete类的常用方法

Date类是Java最早的日期类,提供了一些基本的日期和时间操作方法,包括:

1. 构造方法

- Date():创建一个表示当前时间的Date对象。

- Date(long date):创建一个表示指定时间的Date对象,参数date是自1970年1月1日0时0分0秒以来的毫秒数。

import java.util.Date;

public class ImportWay {
    public static void main (String []args){
        //创建一个表示当前时间的Date对象
        Date now = new Date();
        System.out.println("当前时间: "+now);
        //创建一个表示指定时间的Date对象
        Date date = new Date(1000000000000L);
        //参数date是自1970年1月1日0时0分0秒以来的毫秒数。
        System.out.println("指定时间:"+date);
    }

}

输出结果

当前时间: Thu Mar 16 20:54:38 CST 2023

指定时间:Sun Sep 09 09:46:40 CST 2001

/*
在上面的示例代码中,我们首先使用无参构造方法创建了一个表示当前时间的Date对象now,然后使用有参构造方法创建了一个表示指定时间的Date对象date,参数为自1970年1月1日0时0分0秒以来的毫秒数。最后,我们分别输出了这两个Date对象的字符串表示形式。

需要注意的是,Date类已经过时,不推荐使用。在Java 8之后,推荐使用新的日期和时间API(如LocalDate、LocalTime、
*/

2. 获取时间的方法

- getTime():返回自1970年1月1日0时0分0秒以来的毫秒数。

- getYear():返回当前时间的年份,需要注意的是,返回的年份是从1900年开始计算的,因此需要加上1900才是实际的年份。

- getMonth():返回当前时间的月份,范围是0~11,需要注意的是,0表示1月,11表示12月。

- getDate():返回当前时间的日期,范围是1~31。

- getDay():返回当前时间是星期几,范围是0~6,0表示星期日,1表示星期一,以此类推。

import java.util.Date;

public class ImportWay {
    public static void main (String []args){
        Date date = new Date();
        //getTime()方法
        //该方法返回1970年1月1日0时0分0秒以来的毫秒数
        long time = date.getTime();
        //输出-----当前时间的毫秒数:1624512345678;
        System.out.println("当前时间的毫秒数:"+time);



        //getYear()方法
        //该方法返回当前时间的年份,需要注意的是,返回的年份是从1900年开始计算的,因此需要加上1900才是实际的年份。
        int year = date.getYear()+1900;
        //输出结果-----当前年份:2023
        System.out.println("当前年份:"+year);


        //getMonth()方法
        //该方法返回当前时间的月份,范围是0~11,需要注意的是,0表示1月,11表示12月。
        int month = date.getMonth() + 1;
        //当前月份:3 月
        System.out.println("当前月份:" + month);


        //getDate()方法
        //该方法返回当前时间的日期,范围是1~31。
        int day = date.getDate();
        //当前日期:16
        System.out.println("当前日期:" + day);


        //getDay()方法
        //该方法返回当前时间是星期几,范围是0~6,0表示星期日,1表示星期一,以此类推。
        int week = date.getDay();
        //当前星期:4
        System.out.println("当前星期:" + week);




    }

}

输出结果

当前时间的毫秒数:1678972475617
当前年份:2023
当前月份:3
当前日期:16
当前星期:4

3. 设置时间的方法

- setTime(long time):设置当前时间为指定的毫秒数。

import java.util.Date;

public class ImportWay {
    public static void main (String []args){
        Date date = new Date();
        System.out.println("设置前的时间:" + date);


        long time = 1000L;
        date.setTime(time);

        System.out.println("设置后的时间:"+date);



    }

}

结果可以看到,通过setTime()方法可以将Date对象的时间设置为指定的毫秒数。

设置前的时间:Thu Mar 16 21:22:23 CST 2023
设置后的时间:Thu Jan 01 08:00:01 CST 1970
/*
Thu:表示星期四
Mar:表示3月
CST:Central Standard Time的缩写,表示中央标准时间。它是世界上24个主要时区之一,覆盖北美洲、中美洲和一部分加勒比海地区。在中国,CST通常指中国标准时间,即北京时间。
设置后的时间:Thu Jan 01 08:00:01 CST 1970--------可以看到,通过setTime()方法可以将Date对象的时间设置为指定的毫秒数。
*/

4. 其他方法

- after(Date when):判断当前时间是否在指定时间之后。

- before(Date when):判断当前时间是否在指定时间之前。

- clone():复制当前Date对象。

- compareTo(Date anotherDate):比较当前时间和指定时间的先后顺序,返回值为0表示相等,小于0表示当前时间在指定时间之前,大于0表示当前时间在指定时间之后。

- equals(Object obj):判断当前Date对象是否等于指定对象。

- hashCode():返回当前Date对象的哈希码值。

哈希码值(Hash Code)是Java中用于表示对象的整型值。
        每个Java对象都有一个哈希码值,可以通过hashCode()方法获取。
        哈希码值是根据对象的内部状态计算出来的,因此不同的对象一般会有不同的哈希码值。
        哈希码值在Java中主要用于实现哈希表等数据结构,可以提高查找效率。
        在Java中,如果两个对象的哈希码值相同,不一定表示它们相等,因为哈希码值有可能会发          生冲

- toString():返回当前Date对象的字符串表示形式。

import java.util.Date;

public class ImportWay {
    public static void main (String []args){

        //after(Date when)方法
        //该方法用于判断当前时间是否在指定时间之后。如果当前时间在指定时间之后,则返回true,否则返回false。
        Date date1 = new Date();
        Date date2 = new Date(date1.getTime() + 1000); // 比date1晚1秒钟

        boolean result = date2.after(date1);
        System.out.println("date2是否在date1之后:" + result);

        //before(Date when)方法
        //该方法用于判断当前时间是否在指定时间之前。如果当前时间在指定时间之前,则返回true,否则返回false。
        Date date3 = new Date(date1.getTime() - 1000);// 比date1早1秒钟

        boolean result2 = date2.before(date1);
        System.out.println("date2是否在date1之前:" + result);

        //clone()方法
        //该方法用于复制当前Date对象。
        Date date4 = (Date) date1.clone();

        System.out.println("date1:" + date1);
        System.out.println("date2:" + date4);//可以看到,通过clone()方法可以复制一个新的Date对象,两个对象的时间是相同的。

        // compareTo(Date anotherDate)方法
        //该方法用于比较当前时间和指定时间的先后顺序,返回值为0表示相等,小于0表示当前时间在指定时间之前,大于0表示当前时间在指定时间之后。

        Date date5 = new Date(date1.getTime() + 1000); // 比date1晚1秒钟

        int result3 = date1.compareTo(date5);
        System.out.println("date1和date2的比较结果:" + result3);//可以看到,通过compareTo()方法可以比较两个Date对象的先后顺序。

        //equals(Object obj)方法
        //该方法用于判断当前Date对象是否等于指定对象。如果两个对象的时间相同,则返回true,否则返回false

        Date date6 = new Date(date1.getTime());

        boolean result4 = date1.equals(date6);
        System.out.println("date1和date2是否相等:" + result4);//可以看到,通过equals()方法可以判断两个Date对象的时间是否相同。

        // hashCode()方法
        // 该方法用于返回当前Date对象的哈希码值。
        Date date = new Date();
        int hashCode = date.hashCode();

        System.out.println("date的哈希码值:" + hashCode);
        /*哈希码值(Hash Code)是Java中用于表示对象的整型值。
        每个Java对象都有一个哈希码值,可以通过hashCode()方法获取。
        哈希码值是根据对象的内部状态计算出来的,因此不同的对象一般会有不同的哈希码值。
        哈希码值在Java中主要用于实现哈希表等数据结构,可以提高查找效率。
        在Java中,如果两个对象的哈希码值相同,不一定表示它们相等,因为哈希码值有可能会发生冲突。
        因此,在比较两个对象是否相等时,一般需要同时比较它们的哈希码值和内部状态。
         */

        //toString()方法
        //该方法用于返回当前Date对象的字符串表示形式。

        Date date_ = new Date();
        String str = date_.toString();

        System.out.println("date的字符串表示形式:" + str);//可以看到,通过toString()方法可以获取Date对象的字符串表示形式。

    }

}

结果

date2是否在date1之后:true
date2是否在date1之前:true
date1:Thu Mar 16 21:49:34 CST 2023
date2:Thu Mar 16 21:49:34 CST 2023
date1和date2的比较结果:-1
date1和date2是否相等:true
date的哈希码值:-357638202
date的字符串表示形式:Thu Mar 16 21:49:34 CST 2023

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值