DateTime表示时间上的一刻,通常以日期和当天的时间表示。借用这个结构,我们可以实现较丰富的功能,本文给出得到每周每天的方法,及得到本月第一天,本月最后一天,本季第一天,本季最后一天,本年第一天及本年最后一天的方法,这在一些与财务有关或库存管理软件中非常有用。
DateTime dt = DateTime.Now; //得到当前时间
DateTime startYear = new DateTime(dt.Year, 1, 1); //本年年初
DateTime endYear = new DateTime(dt.Year, 12, 31); //本年年末
DateTime startQuarter = dt.AddMonths(0 - (dt.Month - 1) % 3).AddDays(1 - dt.Day); //本季度初
DateTime endQuarter = startQuarter.AddMonths(3).AddDays(-1); //本季度末
DateTime startMonth = dt.AddDays(1 - dt.Day); //本月月初
DateTime endMonth = startMonth.AddMonths(1).AddDays(-1); //本月月末
//DateTime endMonth = startMonth.AddDays((dt.AddMonths(1) - dt).Days - 1); //本月月末
DateTime startWeek = dt.AddDays(1 - Convert.ToInt32(dt.DayOfWeek.ToString("d"))); //本周周一
DateTime endWeek = startWeek.AddDays(6); //本周周日
c#如何计算当月季度时间段
//本季度第一天
DateTime firsyDayInQuarter = new DateTime(DateTime.Now.Year, DateTime.Now.Month - (DateTime.Now.Month - 1) % 3, 1);
//本季度最后一天
DateTime lastDayInQuarter = firsyDayInQuarter.AddMonths(3).AddDays(-1);
publicvoid 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