一、各类的优缺点
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 指定时间: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;//输出结果-----当前年份: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();//当前日期:16System.out.println("当前日期:" + day);//getDay()方法//该方法返回当前时间是星期几,范围是0~6,0表示星期日,1表示星期一,以此类推。int week = date.getDay();//当前星期:4System.out.println("当前星期:" + week);}}
输出结果
当前时间的毫秒数:1678972475617当前年份:当前月份: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 设置后的时间: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 = pareTo(date5);System.out.println("date1和date2的比较结果:" + result3);//可以看到,通过compareTo()方法可以比较两个Date对象的先后顺序。//equals(Object obj)方法//该方法用于判断当前Date对象是否等于指定对象。如果两个对象的时间相同,则返回true,否则返回falseDate 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之后:truedate2是否在date1之前:truedate1:Thu Mar 16 21:49:34 CST date2:Thu Mar 16 21:49:34 CST date1和date2的比较结果:-1date1和date2是否相等:truedate的哈希码值:-357638202date的字符串表示形式:Thu Mar 16 21:49:34 CST
如果觉得《Dete类 Calendar类 Clock类 Instant类 Localtime类 Duration类 LocalDate类 Period类的特性(1)》对你有帮助,请点赞、收藏,并留下你的观点哦!