04 June 2016

上一篇文章针对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

上面这些都是业务需求正常的封装,没有细说的必要了。 日期函数最常用的还是日期的格式化和解析。





blog comments powered by Disqus
Fork me on GitHub