工具类的设计
将一些反复调用的代码封装成工具类,不仅可以提高开发效率,还可以提高代码的可读性。MR 人脸识别打卡系统中共有两个工具类,分别是日期时间工具类和数据库连接工具类。
日期时间工具类主要用在考勤报表业务和窗体显示中,数据库连接工具类主要用在数据库接口的实现类中。
日期时间工具类
com.mr.clock.util 包下的 DateTimeUtil.java 为日期时间工具类,该类为项目提供了一系列获取时间、校验时间格式的静态工具方法。
获取当前日期 时间字符串
DateTimeUtil 类提供了 3 种获取当前时间字符串的方法,具体如下:
-
按照 HH:mm:ss 的格式获取当前时间的 timeNow() 方法,得到的字符串格式如 “20:03:56”,即晚上8时3分56秒。
-
按照 yyyy-MM-dd 的格式获取当前日期的 dateNow() 方法,得到的字符串格式如“2023-1-08”,即2023年1月8日。
-
按照 yyyy-MM-dd HH:mm:ss 的格式获取当前日期时间的 dateTimeNow() 方法,得到的字符串格式如 “2023-1-08 20:03:56”,即2023年1月8日晚上8时3分56秒。
这3种方法的具体代码如下:
获取由当前年 月 日 时 分 秒数字所组成的数组
DateTimeUtil 类提供的 now() 方法可以将当前时间的年、月、日、时、分、秒数组封装成一个长度为6的整数数组。now() 方法使用 Calendar 日历类获取当前年、月、日、时、分、秒。因为在 Calendar 日历类中一月份是用数字0表示的,所以要在月份结果后面+1。now() 方法的具体代码如下:
获取指定月份的总天数
DateTimeUtil 类提供的 getLastDay() 方法可以获取指定月份的总天数,也就是最后一天的日期。方法的参数year用来指定年份,参数month用来指定月份。计算出一个月有多少天对于生成考勤报表是至关重要的,不同月份可能出现的总天数为28天、29天(闰年)、30天和31天。getLastDay() 方法使用Calendar日历类提供的 getActualMaximum() 方法即可自动计算出具体月份的总天数。getLastDay() 方法的具体代码如下:
将字符串转换为Date对象
DateTimeUtil类提供的dateOf()方法可以将时间字符串转为Date对象,该方法的参数datetime就是传入的时间字符串,该字符串必须符合yyyy-MM-dd HH:mm:ss时间格式,否则该方法会抛出ParseException异常。dateOf()方法的具体代码如下:
按照指定年 月 日和时间创建Date对象
这是dateOf()方法的重载方法,该方法的参数由原先的1个变为4个。其中,参数year指定具体年份,参数month指定具体月份,参数day指定具体日期,这3个参数都是整数类型。最后一个参数time指定了时间,time必须是以HH:mm:ss为时间格式的字符串,否则dateOf()方法的重载方法会抛出ParseException异常。dateOf()方法的重载方法会拼接这4个参数,然后按照"%4d-%02d-%02d %s"对拼接的结果进行格式化,其含义如下:
-
%4d:长度为4的整数。
-
%02d:长度为2且用0补位的整数。
-
%s:直接显示字符串。
最后就会将参数拼接成符合yyyy-MM-dd HH:mm:ss时间格式的字符串,并将拼接好的字符串交给dateOf(String datetime)进行转换。重载方法的具体代码如下: