C#根据当前时间获取周,月,季度,年度等时间段的起止时间

C#根据当前时间获取周,月,季度,年度等时间段的起止时间

最近有个统计分布的需求,需要按统计本周,上周,本月,上月,本季度,上季度,本年度,上年度等时间统计分布趋势,所以这里就涉及到计算周,月,季度,年度等的起止时间了,下面总结一下C#中关于根据当前时间获取周,月,季度,年度等时间段的起止时间的方法,废话不多说,直接贴代码,如果你觉得有用,请多多推荐。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
DateTime dt = DateTime.Now;   //当前时间
DateTime startWeek = dt.AddDays(1 - Convert.ToInt32(dt.DayOfWeek.ToString( "d" )));   //本周周一
DateTime endWeek = startWeek.AddDays(6);   //本周周日
 
DateTime startMonth = dt.AddDays(1 - dt.Day);   //本月月初
DateTime endMonth = startMonth.AddMonths(1).AddDays(-1);   //本月月末//
 
endMonth = startMonth.AddDays((dt.AddMonths(1) - dt).Days - 1);   //本月月末
DateTime startQuarter = dt.AddMonths(0 - (dt.Month - 1) % 3).AddDays(1 - dt.Day);   //本季度初
DateTime endQuarter = startQuarter.AddMonths(3).AddDays(-1);   //本季度末
 
DateTime startYear =  new  DateTime(dt.Year, 1, 1);   //本年年初
DateTime endYear =  new  DateTime(dt.Year, 12, 31);   //本年年末至于昨天、明天、上周、上月、上季度、上年度等等,
 
var  上周一 = DateTime.Now.AddDays(Convert.ToInt32(1 - Convert.ToInt32(DateTime.Now.DayOfWeek)) - 7);         //上周一
var  上周末 = DateTime.Now.AddDays(Convert.ToInt32(1 - Convert.ToInt32(DateTime.Now.DayOfWeek)) - 7).AddDays(6);      //上周末(星期日)//下周
var  下周一 = DateTime.Now.AddDays(Convert.ToInt32(1 - Convert.ToInt32(DateTime.Now.DayOfWeek)) + 7);         //下周一
var  下周末 = DateTime.Now.AddDays(Convert.ToInt32(1 - Convert.ToInt32(DateTime.Now.DayOfWeek)) + 7).AddDays(6);  //下周末
 
DateTime.Parse(DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() +  "1" ).AddMonths(1).AddDays(-1).ToShortDateString(); //最后一天
//巧用C#里ToString的字符格式化更简便
DateTime.Now.ToString( "yyyy-MM-01" ); //本月初
DateTime.Parse(DateTime.Now.ToString( "yyyy-MM-01" )).AddMonths(1).AddDays(-1).ToShortDateString(); //本月最后一天
DateTime.Parse(DateTime.Now.ToString( "yyyy-MM-01" )).AddMonths(-1).ToShortDateString(); //上个月1号
DateTime.Parse(DateTime.Now.ToString( "yyyy-MM-01" )).AddDays(-1).ToShortDateString(); //上个月最后一天
DateTime.Parse(DateTime.Now.ToString( "yyyy-MM-01" )).AddMonths(1).ToShortDateString(); // 下个月1号
DateTime.Parse(DateTime.Now.ToString( "yyyy-MM-01" )).AddMonths(2).AddDays(-1).ToShortDateString(); //下下月最后一天
DateTime.Now.AddDays(7).ToShortDateString(); //7天后
DateTime.Now.AddDays(-7).ToShortDateString(); //7天前
DateTime.Now.Date.ToShortDateString(); //本年度,用ToString的字符格式化我们也很容易地算出本年度的第一天和最后一天
 
DateTime.Parse(DateTime.Now.ToString( "yyyy-01-01" )).ToShortDateString(); //本年度第一天
DateTime.Parse(DateTime.Now.ToString( "yyyy-01-01" )).AddYears(1).AddDays(-1).ToShortDateString(); //本年度最后一天
 
DateTime.Parse(DateTime.Now.ToString( "yyyy-01-01" )).AddYears(-1).ToShortDateString();  //上年度第一天,
DateTime.Parse(DateTime.Now.ToString( "yyyy-01-01" )).AddDays(-1).ToShortDateString(); //上年度第最后一天,
 
DateTime.Parse(DateTime.Now.ToString( "yyyy-01-01" )).AddYears(1).ToShortDateString();   //下年度第一天
DateTime.Parse(DateTime.Now.ToString( "yyyy-01-01" )).AddYears(2).AddDays(-1).ToShortDateString(); //下年度最后一天
//本季度,
DateTime.Now.AddMonths(0 - ((DateTime.Now.Month - 1) % 3)).AddDays(1 - DateTime.Now.Day); //本季度第一天;
DateTime.Parse(DateTime.Now.AddMonths(3 - ((DateTime.Now.Month - 1) % 3)).ToString( "yyyy-MM-01" )).AddDays(-1).ToShortDateString(); //本季度的最后一天
DateTime.Now.AddMonths(3 - ((DateTime.Now.Month - 1) % 3)).ToString( "yyyy-MM-01" ); //下季度的第一天
DateTime.Parse(DateTime.Now.AddMonths(6 - ((DateTime.Now.Month - 1) % 3)).ToString( "yyyy-MM-01" )).AddDays(-1).ToShortDateString(); // 下季度最后一天
 
DateTime.Now.AddMonths(-3 - ((DateTime.Now.Month - 1) % 3)).AddDays(1 - DateTime.Now.Day); // 上季度第一天
DateTime.Now.AddMonths(0 - ((DateTime.Now.Month - 1) % 3)).AddDays(1 - DateTime.Now.Day).AddDays(-1).ToShortDateString(); // 上季度最后一天

 

转载于:https://www.cnblogs.com/cjm123/p/8921016.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值