1,数据库计算
一周是从周日到周六
select DateName(week,getdate())
一周是从周一到周日
set datefirst 1 select DateName(week,getdate())
指示一周的第一天的一个整数。可以是下列值之一。
| 值 | 一周的第一天是 |
|---|---|
| 1 | 星期一 |
| 2 | 星期二 |
| 3 | 星期三 |
| 4 | 星期四 |
| 5 | 星期五 |
| 6 | 星期六 |
| 7(默认值,美国英语) | 星期日 |
2,c#计算
一周是从周日到周六
/// <summary>
/// 当前日期为当前年份周数
/// </summary>
/// <param name="Date">当前时间</param>
/// <returns>周数</returns>
private int GetWeekOrderOfDate(DateTime Date)
{
//当天所在的年份
int year = Date.Year;
//当年的第一天
DateTime firstDay = new DateTime(year, 1, 1);
//当年的第一天是星期几
int firstOfWeek = Convert.ToInt32(firstDay.DayOfWeek);
//if (firstDay.DayOfWeek == DayOfWeek.Sunday) firstOfWeek = 7;
//当年第一周的天数
int firstWeekDayNum = 7 - firstOfWeek;
//传入日期在当年的天数与第一周天数的差
int otherDays = Date.DayOfYear - firstWeekDayNum;
//传入日期不在第一周内
if (otherDays > 0)
{
int weekNumOfOtherDays;
if (otherDays % 7 == 0)
{
weekNumOfOtherDays = otherDays / 7;
}
else
{
weekNumOfOtherDays = otherDays / 7 + 1;
}
return weekNumOfOtherDays + 1;
}
//传入日期在第一周内
else
{
return 1;
}
}
一周是从周一到周日
/// <summary>
/// 当前日期为当前年份周数
/// </summary>
/// <param name="Date">当前时间</param>
/// <returns>周数</returns>
private int GetWeekOrderOfDate(DateTime Date)
{
//当天所在的年份
int year = Date.Year;
//当年的第一天
DateTime firstDay = new DateTime(year, 1, 1);
//当年的第一天是星期几
int firstOfWeek = Convert.ToInt32(firstDay.DayOfWeek);
if (firstDay.DayOfWeek == DayOfWeek.Sunday) firstOfWeek = 7;
//当年第一周的天数
int firstWeekDayNum = 8 - firstOfWeek;
//传入日期在当年的天数与第一周天数的差
int otherDays = Date.DayOfYear - firstWeekDayNum;
//传入日期不在第一周内
if (otherDays > 0)
{
int weekNumOfOtherDays;
if (otherDays % 7 == 0)
{
weekNumOfOtherDays = otherDays / 7;
}
else
{
weekNumOfOtherDays = otherDays / 7 + 1;
}
return weekNumOfOtherDays + 1;
}
//传入日期在第一周内
else
{
return 1;
}
}
方法2:
public int WeekOfYear(DateTime dt, CultureInfo ci)
{
return ci.Calendar.GetWeekOfYear(dt, ci.DateTimeFormat.CalendarWeekRule, ci.DateTimeFormat.FirstDayOfWeek);
}
调用方法 周日到周六算一周
WeekOfYear(Convert.ToDateTime("2012-1-2 00:00:00"),new CultureInfo("zh-CN"))
http://msdn.microsoft.com/zh-cn/library/system.globalization.cultureinfo(VS.80).aspx

本文提供两种方法来计算一年中当前日期所在的一周,一种是通过SQL语句设置一周的起始日,另一种是使用C#代码实现,适用于不同的一周起始日需求。
716

被折叠的 条评论
为什么被折叠?



