C# Net 计算周(可正推和逆推)

拷贝代码(方法):

  1. /// <summary>
  2. /// 计算周
  3. /// </summary>
  4. /// <param name="Time">一个时间点,用来计算周(必须有年月日)</param>
  5. /// <param name="WeekCount">推测的周数量</param>
  6. /// <param name="Add">是正推(加)还是负推(减)</param>
  7. /// <param name="ThisWeek">是否包含此时间点所在的周</param>
  8. /// <returns></returns>
  9. public static List<TimeWeek> GetTimeWeek(DateTime Time, int WeekCount, bool Add, bool ThisWeek)
  10. {
  11. List<TimeWeek> timeWeeks = new List<TimeWeek>();
  12. TimeWeek week = new TimeWeek();
  13. week.Week = ConvertWeekOfYear(Time);
  14. int dayOfTheWeek = (int)Time.DayOfWeek;
  15. int CountLength = dayOfTheWeek == ? : dayOfTheWeek;
  16. //如果包含当前周,就加入到返回列表.同时推算的周数减一
  17. if (ThisWeek)
  18. {
  19. DateTime mon = Time.Date.AddDays( - CountLength);//本周一
  20. DateTime sun = Time.Date.AddDays( - CountLength).AddDays().AddSeconds(-);//本周日
  21. week.BeginTime = mon;
  22. week.EndTime = sun;
  23. timeWeeks.Add(week);
  24. WeekCount--;
  25. }
  26. if (Add)
  27. {
  28. for (int i = ; i <= WeekCount; i++)
  29. {
  30. DateTime mon = Time.Date.AddDays( - CountLength + i * );//往前推的周数计算星期一
  31. DateTime sun = Time.Date.AddDays( - CountLength + i * ).AddDays().AddSeconds(-);
  32. TimeWeek Downweek = new TimeWeek();
  33. Downweek.Week = ConvertWeekOfYear(mon);
  34. Downweek.BeginTime = mon;
  35. Downweek.EndTime = sun;
  36. timeWeeks.Add(Downweek);
  37. }
  38. }
  39. else
  40. {
  41. for (int i = ; i <= WeekCount; i++)
  42. {
  43. DateTime mon = Time.Date.AddDays( - CountLength - i * );//往回推的周数计算星期一
  44. DateTime sun = Time.Date.AddDays( - CountLength - i * ).AddDays().AddSeconds(-);
  45. TimeWeek upweek = new TimeWeek();
  46. upweek.Week = ConvertWeekOfYear(mon);
  47. upweek.BeginTime = mon;
  48. upweek.EndTime = sun;
  49. timeWeeks.Add(upweek);
  50. }
  51. }
  52. return timeWeeks.OrderBy(t => t.BeginTime).ToList();
  53. }
  54.  
  55. /// <summary>
  56. /// 返回指定年份的周
  57. /// </summary>
  58. /// <param name="time"></param>
  59. /// <returns></returns>
  60. public static int ConvertWeekOfYear(DateTime time)
  61. {
  62. System.Globalization.GregorianCalendar gc = new System.Globalization.GregorianCalendar();
  63. return gc.GetWeekOfYear(time, System.Globalization.CalendarWeekRule.FirstDay, DayOfWeek.Monday);
  64. }

拷贝代码(自定义类):

  1. /// <summary>
  2. /// 时间周
  3. /// </summary>
  4. public class TimeWeek
  5. {
  6. /// <summary>
  7. /// 第几周(从开年的1月1日计算)
  8. /// </summary>
  9. public int Week { get; set; }
  10. /// <summary>
  11. /// 这周的开始时间(一般是周一)
  12. /// </summary>
  13. public DateTime BeginTime { get; set; }
  14. /// <summary>
  15. /// 这周的结束时间(一般是周日)
  16. /// </summary>
  17. public DateTime EndTime { get; set; }
  18. }

C# Net 计算周(可正推和逆推)的更多相关文章

  1. 安卓推送——个推服务端api使用误区

    首先你需要在个推开放着平台上注册你的应用,以及获得以下几个必要的值APPID |APPKEY | MASTERSECRET,本文假设你已经完成上述步骤以及完成客户端SDK的集成. 原理 个推服务端ap ...

  2. uva10537 dijkstra + 逆推

    21:49:45 2015-03-09 传送 http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8& ...

  3. HDU 1176-免费馅饼(DP_逆推)

    免费馅饼 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  4. java SDK服务端推送 --极光推送(JPush)

    网址:https://blog.csdn.net/duyusean/article/details/86581475 消息推送在APP应用中越来越普遍,来记录一下项目中用到的一种推送方式,对于Andr ...

  5. iOS 之消息推送(个推)---个人小结

    前言:自从上个星期开始整这个推送,弄了差不多一个星期,今天终于给整好了,因此现在来记录这段"奇妙"的旅程. 我们公司使用的消息推送是用的第三方--个推,这里不得不说一下,个推的技术 ...

  6. 个推+DCLOUD,推送消息和透传消息

    DCLOUD方案中集成了个推方案,最好是用个推来做推送相关的东西 消息分2类: 1.推送消息,这种一般会出现在手机的最上面的通知栏,用户是肯定会知道的 2.透传消息,这种一般就是一个Alert提示框, ...

  7. atitit.web 推送实现方案集合(2)---百度云,jpush 极光推送 ,个推的选型比较.o99

    atitit.web 推送实现方案集合(2)---百度云,jpush 极光推送 ,个推的选型比较.o99 1.1. 云推送有推送次数或频率的限制吗? 1 1.2. 推送的消息长度 1 1.3. 离线消 ...

  8. IOS中程序如何进行推送消息(本地推送,远程推送)2(上)

    未看过本地推送的,可以提前看一下本地推送. http://www.cnblogs.com/wolfhous/p/5135711.html =============================== ...

  9. UVA116Unidirectional TSP(DP+逆推)

    http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=18206 题意:M*N的数阵,从左边一列到右边一列走过的数的和的最小.并输出路 ...

随机推荐

  1. Windows/Linux下jdk环境配置

    Windows 7下: Windows7 x64位系统 安装好java 1.点击开始菜单选择计算机选项右键选择属性选项 即可 2.然后在属性界面点击如图所示的高级系统设置选项 3.打开系统属性界面然后 ...

  2. Shell编程——位置参数变量

    1. (1)创建Shell脚本: (2)赋予执行权限: (3)执行Shell脚本: (4)对脚本赋值后执行脚本: $n:n为数字,$0代表命令本身,$1-9代表第一到第九个参数,十以上的参数用大括号包 ...

  3. ESP8266 AT指令开发(基于STC89C52单片机): 硬件使用说明

    实物图 硬件说明 开发板板载说明: 1.主控芯片: STC89C52 2.Wi-Fi模块: ESP8266 3.温湿度传感器: DHT11 4.液晶屏: IIC OLED 5.继电器: 220V 10 ...

  4. 调试经验分享-让自己的电脑充当WI-Fi模块,用来抓取连接Wi-Fi模块APP上的通信数据

    需求 手头有了厂家的APP和Wi-Fi模块 在已经知道APP是通过TCP连接Wi-Fi模块(8266), 同时也知道了连接的端口号的 情况下如何知道厂家的APP发送给Wi-Fi模块的数据 打开自己的笔 ...

  5. 微信小程序开发工具调试没问题,真机调试Provisional headers are shown

    from: https://blog.csdn.net/github_38928905/article/details/83105523 在开发工具调试,请求正常没问题,使用真机调试,请求异常:Pro ...

  6. Linux性能优化实战学习笔记:第九讲

    一.中断的魅力 1.中断在生活的魅力 比如你订了一份外卖,但是不确定外卖什么时候送到,也没有别的方法了解外卖的进度,但是,配送员送外卖是不等人的,到了你这儿没人取的话,就直接走人了.所以你指能苦苦等着 ...

  7. Linux性能优化实战学习笔记:第四十讲

    一.上节回顾 上一节,我们学习了碰到分布式拒绝服务(DDoS)的缓解方法.简单回顾一下,DDoS利用大量的伪造请求,导致目标服务要耗费大量资源,来处理这些无效请求,进而无法正常响应正常用户的请求. 由 ...

  8. 解决VMware虚拟机中centos 7无法上网的问题

    在WMware中安装centos 7后发现无法安装软件,开始以为是镜像服务器的问题,后来通过ping之后发现根本没办法连接到网络.由于很多设置都是默认的,并且虚拟机也是NAT模式,和电脑主机共享网络, ...

  9. 通过欧拉计划学习Rust编程(第22~25题)

    最近想学习Libra数字货币的MOVE语言,发现它是用Rust编写的,所以先补一下Rust的基础知识.学习了一段时间,发现Rust的学习曲线非常陡峭,不过仍有快速入门的办法. 学习任何一项技能最怕没有 ...

  10. Qt Quick 常用元素:RadioButton(单选框),CheckBox(复选框) 与 GroupBox(分组框)

    先介绍一下 ExclusiveGroup. ExclusiveGroup (互斥分组)本身是不可见元素,用于将若干个可选择元素组合在一起, 供用户选择其中的一个选项.你可以在 ExclusiveGro ...