先列个CODE出来
public void MadeDateTime(DateTime standTime, out DateTime? startTime, out DateTime? endTime) { //1~3;4~6;7~9;10~12 //1-4-7-10 int baseMonth = standTime.Month - 1; int MonthLen = baseMonth / 3; startTime = new DateTime(standTime.Year, 1 + MonthLen * 3, 1); endTime = startTime.Value.AddMonths(3).AddMilliseconds(-1); }
第一个参数为标准对校时间点。
第二个参数为当前季度的起始时间点
第三个参数为当前季度的结束时间点
计算原理:
1/3=0 2/3=0 3/3=1 4/3=1 5/3=1 6/3=2 7/3=2 8/3=2 9/3=3 10/3=3 11/3=3 12/3=4
大家发现了没有呢?如果将月份-1再除以3的话,就得到以下结果
(1-1)/3=0 (2-1)/3=0 (3-1)/3=0 (4-1)/3=1 (5-1)/3=1 (6-1)/3=1 (7-1)/3=2 (8-1)/3=2 (9-1)/3=2 (10-1)/3=3 (11-1)/3=3 (12-1)/3=3
然后拿这个计算结果乘以3再加1的话,就得到这个月的季度的起始月份
0*3+1=1 0*3+1=1 0*3+1=1 1*3+1=4 1*3+1=4 1*3+1=4 2*3+1=7 2*3+1=7 2*3+1=7 3*3+1=10 3*3+1=10 3*3+1=10 有了起始的月份后,结束时间就是起始的时间加上3个月再减去一毫秒,就得到了季度的结束时间了,就有了刚开始的CODE。
|
请发表评论