这是一个需要转换的简单映射函数:1 2 3 4 5 6 7 8 9 10 11 12
|
V
1 1 1 4 4 4 7 7 7 10 10 10
积分计算可以通过多种方式实现,其中两种方法是:
^{pr2}$
以及:def firstMonthInQuarter(month):
return month - (month - 1) % 3
第一种方法是将月份整除为从零开始的月份,得到以零为基础的季度,乘法将该月变回以零为基础的月份(但是月份在季度的开始),然后再加一个,使范围1..12。在month -1 //3 *3 +1
----- -- --- -- --
1 0 0 0 1
2 1 0 0 1
3 2 0 0 1
4 3 1 3 4
5 4 1 3 4
6 5 1 3 4
7 6 2 6 7
8 7 2 6 7
9 8 2 6 7
10 9 3 9 10
11 10 3 9 10
12 11 3 9 10
第二种方法只是从月份本身减去一个季度(0,1,2)内的位置,得到起始月份。在month(a) -1 %3(b) a-b
-------- -- ----- ---
1 0 0 1
2 1 1 1
3 2 2 1
4 3 0 4
5 4 1 4
6 5 2 4
7 6 0 7
8 7 1 7
9 8 2 7
10 9 0 10
11 10 1 10
12 11 2 10