C# Net 计算周(可正推和逆推)
C# Net 计算周(可正推和逆推)
拷贝代码(方法):
/// <summary>
/// 计算周
/// </summary>
/// <param name="Time">一个时间点,用来计算周(必须有年月日)</param>
/// <param name="WeekCount">推测的周数量</param>
/// <param name="Add">是正推(加)还是负推(减)</param>
/// <param name="ThisWeek">是否包含此时间点所在的周</param>
/// <returns></returns>
public static List<TimeWeek> GetTimeWeek(DateTime Time, int WeekCount, bool Add, bool ThisWeek)
{
List<TimeWeek> timeWeeks = new List<TimeWeek>();
TimeWeek week = new TimeWeek();
week.Week = ConvertWeekOfYear(Time);
int dayOfTheWeek = (int)Time.DayOfWeek;
int CountLength = dayOfTheWeek == ? : dayOfTheWeek;
//如果包含当前周,就加入到返回列表.同时推算的周数减一
if (ThisWeek)
{
DateTime mon = Time.Date.AddDays( - CountLength);//本周一
DateTime sun = Time.Date.AddDays( - CountLength).AddDays().AddSeconds(-);//本周日
week.BeginTime = mon;
week.EndTime = sun;
timeWeeks.Add(week);
WeekCount--;
}
if (Add)
{
for (int i = ; i <= WeekCount; i++)
{
DateTime mon = Time.Date.AddDays( - CountLength + i * );//往前推的周数计算星期一
DateTime sun = Time.Date.AddDays( - CountLength + i * ).AddDays().AddSeconds(-);
TimeWeek Downweek = new TimeWeek();
Downweek.Week = ConvertWeekOfYear(mon);
Downweek.BeginTime = mon;
Downweek.EndTime = sun;
timeWeeks.Add(Downweek);
}
}
else
{
for (int i = ; i <= WeekCount; i++)
{
DateTime mon = Time.Date.AddDays( - CountLength - i * );//往回推的周数计算星期一
DateTime sun = Time.Date.AddDays( - CountLength - i * ).AddDays().AddSeconds(-);
TimeWeek upweek = new TimeWeek();
upweek.Week = ConvertWeekOfYear(mon);
upweek.BeginTime = mon;
upweek.EndTime = sun;
timeWeeks.Add(upweek);
}
}
return timeWeeks.OrderBy(t => t.BeginTime).ToList();
} /// <summary>
/// 返回指定年份的周
/// </summary>
/// <param name="time"></param>
/// <returns></returns>
public static int ConvertWeekOfYear(DateTime time)
{
System.Globalization.GregorianCalendar gc = new System.Globalization.GregorianCalendar();
return gc.GetWeekOfYear(time, System.Globalization.CalendarWeekRule.FirstDay, DayOfWeek.Monday);
}
拷贝代码(自定义类):
/// <summary>
/// 时间周
/// </summary>
public class TimeWeek
{
/// <summary>
/// 第几周(从开年的1月1日计算)
/// </summary>
public int Week { get; set; }
/// <summary>
/// 这周的开始时间(一般是周一)
/// </summary>
public DateTime BeginTime { get; set; }
/// <summary>
/// 这周的结束时间(一般是周日)
/// </summary>
public DateTime EndTime { get; set; }
}
C# Net 计算周(可正推和逆推)的更多相关文章
- 安卓推送——个推服务端api使用误区
首先你需要在个推开放着平台上注册你的应用,以及获得以下几个必要的值APPID |APPKEY | MASTERSECRET,本文假设你已经完成上述步骤以及完成客户端SDK的集成. 原理 个推服务端ap ...
- uva10537 dijkstra + 逆推
21:49:45 2015-03-09 传送 http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8& ...
- HDU 1176-免费馅饼(DP_逆推)
免费馅饼 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- java SDK服务端推送 --极光推送(JPush)
网址:https://blog.csdn.net/duyusean/article/details/86581475 消息推送在APP应用中越来越普遍,来记录一下项目中用到的一种推送方式,对于Andr ...
- iOS 之消息推送(个推)---个人小结
前言:自从上个星期开始整这个推送,弄了差不多一个星期,今天终于给整好了,因此现在来记录这段"奇妙"的旅程. 我们公司使用的消息推送是用的第三方--个推,这里不得不说一下,个推的技术 ...
- 个推+DCLOUD,推送消息和透传消息
DCLOUD方案中集成了个推方案,最好是用个推来做推送相关的东西 消息分2类: 1.推送消息,这种一般会出现在手机的最上面的通知栏,用户是肯定会知道的 2.透传消息,这种一般就是一个Alert提示框, ...
- atitit.web 推送实现方案集合(2)---百度云,jpush 极光推送 ,个推的选型比较.o99
atitit.web 推送实现方案集合(2)---百度云,jpush 极光推送 ,个推的选型比较.o99 1.1. 云推送有推送次数或频率的限制吗? 1 1.2. 推送的消息长度 1 1.3. 离线消 ...
- IOS中程序如何进行推送消息(本地推送,远程推送)2(上)
未看过本地推送的,可以提前看一下本地推送. http://www.cnblogs.com/wolfhous/p/5135711.html =============================== ...
- UVA116Unidirectional TSP(DP+逆推)
http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=18206 题意:M*N的数阵,从左边一列到右边一列走过的数的和的最小.并输出路 ...
随机推荐
- scp、rsync、xsync
scp. 拷贝完全相同 scp -r etc/hadoop/dfs.hosts root@192.168.121.134:/usr/local/hadoop/hadoop-2.7.6/etc/hado ...
- zz斯坦福Jure Leskovec图表示学习:无监督和有监督方法
斯坦福Jure Leskovec图表示学习:无监督和有监督方法(附PPT下载) 2017 年 12 月 18 日 专知 专知内容组(编) 不要讲得太清楚 [导读]现实生活中的很多关系都是通过图的形式 ...
- LG2463/BZOJ4698 「SDOI2008」Sandy的卡片 后缀数组
问题描述 LG2463 BZOJ4698 题解 看到\(n\)个数串,一开始不太好处理,可以很容易想到把这\(n\)个数串连到一起,形成一个大串,但是每个串之间不容易处理. 经过思考,想到在每个串中间 ...
- VC修改本机IP地址
http://www.vcchar.com/thread-1527-1-1.html 设置IP地址只需要更改注册表中关于适配器的相应设置,但更改后需要重新启动系统才能生效,而AddIPAddress函 ...
- [LeetCode] 518. Coin Change 2 硬币找零之二
You are given coins of different denominations and a total amount of money. Write a function to comp ...
- Codeforces 652F 解题报告
题意 有n只蚂蚁在长度为m个格子的环上,环上的格子以逆时针编号,每只蚂蚁每秒往它面向的方向移动一格.如果有两只蚂蚁相撞则相互调换方向,问t秒后每只蚂蚁的位置. 题解 首先通过观察可以发现 蚂蚁相撞产生 ...
- LeetCode 118:杨辉三角 II Pascal's Triangle II
公众号:爱写bug(ID:icodebugs) 作者:爱写bug 给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行. Given a non-negative index k whe ...
- ScheduledThreadPoolExecutor源码
添加元素,先添加到数组末尾,然后上调整堆. 取对首元素,把最后一个元素放到0位置,然后下调整堆. 移除中间元素,把最后一个元素放到中间位置,然后下调整堆,下调整堆没动(已经是最大的),就在上调整堆.下 ...
- 使用thanos管理Prometheus持久化数据
关于thanos的介绍可以参考这篇官方博客的翻译文档,本文不作部署操作介绍.下图是thanos的官方架构图,主要有5个组件: Query:可以近似看作是Prometheus的实现,用于采集其他组件的数 ...
- ReentrantReadWriteLock三个线程读数据,三个线程写数据
/*** * 三个线程读数据,三个线程写数据 * */ public class ReadWriteLockTest { public static void main(String[] args) ...