/// 取指定日期是一年中的第几周
/// </summary>
/// <param name="dt">给定的日期</param>
/// <returns>数字 一年中的第几周</returns>
private static int DatePart(DateTime dt)
{
![c#获取当前日期是今年第几周 oracle 获取当前日期](http://img.aihuau.com/images/01111101/01030131t01dfb6b73f562d090f.png)
int weeknow = Convert.ToInt32(dt.DayOfWeek);//今天星期几
int daydiff = (-1) * (weeknow + 1);//今日与上周末的天数差
int days = System.DateTime.Now.AddDays(daydiff).DayOfYear;//上周末是本年第几天
int weeks = days / 7;
if (days % 7 != 0)
{
weeks++;
}
//此时,weeks为上周是本年的第几周
return (weeks + 1);
}
找的上面这个函数可以获取,但是第一周的处理不好,显示的是53周而不是1周
=================分割线=====================
后又根据本人最近的思路,写下了如下的程序,解决了上面第一周处理不好的地方,注释连着看就是我求解的思路算法
private static int GetWeekOfYear()
{
//一.找到第一周的最后一天(先获取1月1日是星期几,从而得知第一周周末是几)
int firstWeekend=7-Convert.ToInt32(DateTime.Parse(DateTime.Today.Year + "-1-1").DayOfWeek);
//二.获取今天是一年当中的第几天
int currentDay = DateTime.Today.DayOfYear;
//三.(今天 减去 第一周周末)/7 等于 距第一周有多少周 再加上第一周的1 就是今天是今年的第几周了
// 刚好考虑了惟一的特殊情况就是,今天刚好在第一周内,那么距第一周就是0 再加上第一周的1 最后还是1
return Convert.ToInt32(Math.Ceiling((currentDay - firstWeekend) / 7.0)) + 1;
}