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

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

如果想要起止时间的零点和59分59秒 ,那么 使用 DateTime dateTime = DateTime.Now.Date;

#region 取得某月的第一天0分0秒/// <summary>/// 取得某月的第一天0分0秒/// </summary>/// <param name="datetime">要取得月份的某一天</param>/// <returns></returns>public static DateTime FirstDayOfMonth(DateTime datetime){return datetime.AddMonths(-1).Date.AddDays(1 - datetime.Day).AddMonths(1);}#endregion#region 取得某月的最后一天59分59秒/// <summary>/// 取得某月的最后一天59分59秒/// </summary>/// <param name="datetime">要取得月份的某一天</param>/// <returns></returns>public static DateTime LastDayOfMonth(DateTime datetime){return DateTime.Parse(datetime.AddDays(1 - datetime.Day).AddMonths(1).ToShortDateString()).AddSeconds(-1);} #endregion
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();// 上季度最后一天
#region 获取 本周、本月、本季度、本年 的开始时间或结束时间/// <summary>/// 获取结束时间/// </summary>/// <param name="TimeType">Week、Month、Season、Year</param>/// <param name="now"></param>/// <returns></returns>public static DateTime? GetTimeStartByType(string TimeType, DateTime now){switch (TimeType){case "Week":return now.AddDays(-(int)now.DayOfWeek + 1);case "Month":return now.AddDays(-now.Day + 1);case "Season":var time = now.AddMonths(0 - ((now.Month - 1) % 3));return time.AddDays(-time.Day + 1);case "Year":return now.AddDays(-now.DayOfYear + 1);default:return null;}}/// <summary>/// 获取结束时间/// </summary>/// <param name="TimeType">Week、Month、Season、Year</param>/// <param name="now"></param>/// <returns></returns>public static DateTime? GetTimeEndByType(string TimeType, DateTime now){switch (TimeType){case "Week":return now.AddDays(7 - (int)now.DayOfWeek);case "Month":return now.AddMonths(1).AddDays(-now.AddMonths(1).Day + 1).AddDays(-1);case "Season":var time = now.AddMonths((3 - ((now.Month - 1) % 3) - 1));return time.AddMonths(1).AddDays(-time.AddMonths(1).Day + 1).AddDays(-1);case "Year":var time2 = now.AddYears(1);return time2.AddDays(-time2.DayOfYear);default :return null;}}#endregion

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

  1. java8 日期范围内 日/周/月/季度/年 的日期结果集

    java8 日期范围内 日/周/月/季度/年 的日期结果集 /*** 根据时间范围列出所有日/周/月/季/年** @Author Moqi* @Date 2020/4/30* @Version V1. ...

  2. python代码根据时间获取周数(week of the year)

    python代码根据时间获取周数(week of the year) # 使用python获取当前是当年的第多少周 import time import datetime # 获取今天是第几周 pri ...

  3. mysql分季度统计数据,mysql按日周月季度统计数据

    mysql按日周月季度统计数据 mysql按日.周.月.季度统计数据 1.使用DATE_FORMAT做等值条件查询 2.DATE_FORMAT函数语法,参考w3school 3.可使用格式 4.使用示 ...

  4. 根据当前时间 获取前一个月后一个月

    根据当前时间 获取前一个月后一个月 const lastMonth = new Date();lastMonth.setMonth(new Date().getMonth() - 1)//格式话 使用 ...

  5. js根据年度周次获取时间,以及根据时间获取周次

    根据年度,周次,已经你要获取周几.来获取时间 //更具年的周次获取时间范围 function dateFromWeek(year, week, day){// year 年// week 周// da ...

  6. moment获取周月年开始和结束时间

    获取当天时间 moment().format('YYYY-MM-DD') 获取本周开始和结束时间 const startDate = moment().startOf('week').format(' ...

  7. 日 周 月 季度 年 统计

    // 总量$total = Db::name("total")->count();// 周访问量$week = Db::name("total")-> ...

  8. MySQL 按周,月,季度,年查询

    一.年度查询 查询 本年度的数据 <span style="font-size:18px;">SELECT * FROM tableName WHERE year( t ...

  9. Java:获取当前日期当前季度、上一季度开始结束日期时间

    获取当前时间的所在季度开始结束日期 /*** 计算某日期所在季度开始日期* 季度划分:1.2.3, 4.5.6, 7.8.9, 10.11.12*/public static Date getSeas ...

最新文章

  1. java 性能检测工具 检测死锁等
  2. mysql索引与优化
  3. python3 导入自定义函数
  4. 代码解释n |= n >>> 16
  5. VC6中用DOM遍历网页中的元素
  6. HTTP/3 来了,你了解它么?
  7. 过拟合与模型调优(part2)--重抽样技术
  8. 在后台中高效工作 – 后台任务
  9. mysql下载的解压包怎么用_教你安装Mysql(解压版/非安装包)图文教程
  10. 【小白向】springBoot初级配置
  11. 【0702作业】输出九九乘法表
  12. 小菜面试 String 篇 之 统计一个字符串中数字,字母,的个数
  13. 使用 Redis 实现一个轻量级的搜索引擎,牛x啊 !
  14. FOC项目知识点总结三 | 完全搞懂 Clarke 与 Park 变换(附动图,仿真文件以及详细讲解数学推导过程)
  15. is automatically signed, but provisioning profile has been manually specified. Set the provisioning
  16. bzoj 1062: [NOI2008]糖果雨
  17. 简信CRM:超实用的CRM选型参考指南,拿走不谢!
  18. 乔纳森·艾维:iPhoneX准备了五年,苹果仍在不断创新
  19. 如何导入和导出Maven项目(分享给别人源码)
  20. WebForm水印照片

热门文章

  1. 福州安卓培训_关于利用东风商学院开展电控发动机维修技师远程培训的通知
  2. Linux-hexdump命令调试event驱动—详解(13)
  3. 二元一次在线计算机,(二元一次)方程组求解在线计算器_三贝计算网_23bei.com
  4. Java Semaphore实现高并发场景下的流量控制(附源码) | 实用代码架构
  5. 带宽与码元的关系_数据速率、载波频率和带宽的关系
  6. PDF和图片怎样合并在一起
  7. 【工作需要】CAD+VBA 实现图块的旋转平移缩放和拼接
  8. redis常用命令集合
  9. 图像的超分辨率重建SRGAN与ESRGAN
  10. 灵性图书馆:好书推荐-《把好运吸过来》