日历是一个常用控件,一般而言我们会通过两种途径来得到,其一是Android原生控件CalendarView,其二是在网上找一些第三方的日历控件。但这两种都有同样的不足,也即不好自定义,比如添给某段日期加个标记,或加一个中国农历,等等。最佳的,是自己写一个,可以完全自定义,无论以后项目怎么扩展,自己心里都有底。
分析一下,日期本身是”年月日“,但我们要写日历,最重要的是“周”,只要我们能够做到如下定位能力便可以轻易写出日历:1、通过年月日来标示某一天,通过加N或减N来得到之前或之后的第N天;2、根据某一天得到该周。这就够了。
在网上搜索,对Java7以下自带的time+date普遍评价不高,有一个叫org.joda.time的库受到推荐,并且恰恰具有前面两项定位能力。
我们只需要两步来实现日历:1、根据某天得到包含该天的周;2、根据某天得到包含该天的月。
第一步,根据某天得到该周:
public CalendarWeek getWeekOfDay(LocalDate localDate){
LocalDate monday = localDate.withDayOfWeek(DateTimeConstants. MONDAY);
LocalDate tuesday = localDate.withDayOfWeek(DateTimeConstants. TUESDAY);
LocalDate wedn