上一篇文章针对lang包中基本类型中的字符串工具类Strings做了阅读,这次来完结剩下的两个:Nums,Times,
Nums
平时针对数字的操作并不是特别多,Nums主要针对,数字的合并,分割,查询进行了一系列的封装。
这个API中都是常规的封装用法,这里就不细说了。
而且从其他第三方类库来看,针对数字的处理需求还是比较少的,大部分都有针对字符串和日期的处理,甚至针对日期的处理还有Joda-Time 这种单独日期帮助库
从代码行数也能看出来,Strings:1100多行,Times:800多行,Nums:400行
Times
年份的处理
- leapYear 判断一年是否为闰年;代码实现如下:
if (year < 4)
return false;
return (year % 400 == 0) || (year % 100 != 0 && year % 4 == 0);
好吧,这里实现的中归中矩,没什么好说的,说实话列出这个方法及代码,我只是为了八卦以下历法,置闰法则:四年一闰、百年不闰、四百年再闰。
点击这里继续八卦什么是闰年,为什么会有闰年?国外有闰年吗^_^。
有些时候想写好代码,还得懂点天文历法,程序猿不容易啊。
- countLeapYear 判断某年(不包括自己)之前有多少个闰年,同上,不解释,依然使用历法常识来处理就行。当然前提是历法常识得知道咯。
日期格式化和解析
- Times中format和sD开头的方法都是将Date格式化为字符串的方法。虽然封装了很多,但最终都是调用下面两个方法,这两个方法没什么特别之处也不细说了。
public static String format(DateFormat fmt, Date d) {
return ((DateFormat) fmt.clone()).format(d);
}
public static String format(String fmt, Date d) {
return new SimpleDateFormat(fmt, Locale.ENGLISH).format(d);
}
- 解析方法同样使用DateFormat和SimpleDateFormat来完成。
其他有意思的工具类
- 以本周为基础获得某一周的时间范围
- 将日期转换为人类易读的格式
- 将毫秒数和日期之间的转换,主要是toMillis和fromMillis
上面这些都是业务需求正常的封装,没有细说的必要了。
日期函数最常用的还是日期的格式化和解析。