前言在日常的开发工作中,我们经常需要用到日期相关类(包括已经处理过日期的日期类),所以特地整理了一篇关于日期相关类的文章,我希望它可以帮助大家。正文1.日期类介绍在Java中,对日期进行操作的类主要包括以下类:工具类属于包继承关系,实现了接口Date类java.util包,需要导入包继承ObjectSerializable、Cloneable,ComparableSimpleDateFormat类java.text默认包,需要导入包继承DateFormatSerializable,CloneableCalendar类java.util包,需要导入包默认继承ObjectSerializable,Cloneable,Comparable。2.Date类这是最基本的日期类,Date类有四个相关的同名类,这四个类属于不同的包,这里我们说的是java.util包下的Date类。1.构造方法Date类有6个构造方法,其中带@Deprecated注解的后5个已经废弃(不推荐),主要使用前2个构造方法。公共日期()公共日期(长日期)@DeprecatedpublicDate(Strings)@DeprecatedpublicDate(intyear,intmonth,intdate)@DeprecatedpublicDate(intyear,intmonth,intdate,inthrs,intmin)@DeprecatedpublicDate(intyear,intmonth,intdate,inthrs,intmin,intsec)有个构造方法,其实我们可以使用new关键字实例化对象来获取时间。通过源码我们可以发现没有参数构造方法其实是通过System.currentTimeMillis()方法获取当前系统时间,然后将时间传递给私有成员变量的long型参数化方法通过方法调用赋值。publicDate(){this(System.currentTimeMillis());}publicDate(longdate){fastTime=date;}//返回当前系统时间与计算机第一年毫秒值的差值()//Computer元年:1970-1-100:00:00//中国时差8小时l=System.currentTimeMillis();System.out.println(l);//1587349600847我们可以看到格式theoutputDateoutput是一种很奇怪的格式,不应该是hashCode吗?其实不是,因为Date类重写了Object的toString()方法,然后日期的格式按照美式格式命名输出,所以有点奇怪。//输出格式为GMT格式Datedate=newDate();System.out.println(date);//MonApr2010:33:49CST2020//Datetime=newDate("");2.常用方法Date类中的大部分方法已经过时,不推荐使用,所以介绍几个常用的before()方法,判断一个时间是否在另一个时间之前,返回值为boolean类型。Datedate1=newDate(1587350029179L);//早于时间Datedate2=newDate(1587350029192L);//晚于时间booleanbefore=date1.before(date2);//判断date1的时间是否早于date2System.out.println(before);//trueafter()方法,判断一个时间是否在另一个时间之后,返回值为boolean类型。Datedate1=newDate(1587350029179L);//前一个时间Datedate2=newDate(1587350029192L);//后一个时间booleanafter=date1.after(date2);//判断date1的时间是否在date2之后系统。出去。println(after);//false3.日期格式化类——SimpleDateFormat类现在我们可以通过上面提到的日期类来操作时间,但是时间的输出格式是格林威治标准时间,时间格式不直观,而且它还是很奇怪,那么有什么办法可以把输出的时间改成我们常用的年月日时分秒的时间格式呢?答案当然是肯定的。Jdk为我们提供了一个操作时间格式的工具类DateFormat,但是我们从源码中发现publicabstractclassDateFormatextendsFormat{}其实是一个抽象类,如图所示。我们都知道一个抽象类Objects是不能通过构造方法来创建或者实例化的。一般来说,他们不能做事。然后我们可以找一个抽象类的子类,然后帮我们格式化Date日期。此类是SimpleDateFormat类。1.构造方法SimpleDateFormat类有四种构造方法,如下:}下图是日期的格式,大写的M代表月份,小写的m代表时分秒;大写的D是年中的第几天,小写的d是一个月中的第几天;大写H表示一天中的小时(0-23),小写h表示上午/下午(1-12)中的小时;大写的S表示毫秒,小写的s表示秒,各自的具体含义可以参考下图:2.常用方法format()方法,按照指定的格式模式对日期进行格式化,返回一个日期字符串DateFormatsdf1=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");System.out.println(sdf1.format(newDate()));//2020-04-2011:40:18parse()方法,使用给定参数-日期字符串转换为时间格式,返回Date对象.DateFormatsdf1=newSimpleDateFormat("yyyy-MM-dd");StringdateStr="2012-10-20";Dateparse=null;try{parse=sdf1.parse(dateStr);System.out.println(parse);//SatOct2000:00:00CST2012}catch(ParseExceptione){e.printStackTrace();}第四,由于Date类中的许多方法,Calendar类已过时(JDK不建议我们使用),Date不能只对年或月或日进行操作,所以出现了Calendar类。英文单词Calendar是日历的意思。Calendar类虽然也是一个抽象类,但是可以通过getInstance()方法获取Calendar对象。publicabstractclassCalendarimplementsSerializable,Cloneable,Comparable
