计算周数

时间:2022-10-09 08:22:10 阅读: 最新文章 文档下载
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

周数的计算问题 c# asp.net

2010年05月11日 星期二 下午 01:16

工厂日历中很多情况下使用一年中第多少周的方式。

大部分公司在ERP系统(包括SAP)中,周数的计算方式为:1月1号所在的周为00周,接下来01周、02周,依此类推。

在具体的算法上,可以采用一个基准日期的方式来实现。

// //从系统设置中加载周几作为每周的第一天。1-Mon、2-Tue...7-Sun

public int FirstWeekDay()

{

return 1;

}

//取基准日期。

// 基准日期为一个参考日期,为某一周的第一天。

public DateTime BaseDate(int FirstWeekDay)

{

if(FirstWeekDay<1 || FirstWeekDay>7)

FirstWeekDay=1;

//内部基准日期1900-01-01是周一,以这个日期为基础,根据入参调整基准日

//例如,以周日作为每周第一天,则返回的基准日期为1900-01-07

DateTime result=DateTime.Parse("1900-01-01").AddDays(FirstWeekDay-1);

return result;

}

//求dtDate所在周的第一天

public DateTime FirstDayOfWeek(DateTime dtDate)

{

//根据dtDate与基准日期之间间隔的天数,以基准日期为基础,来计算dtDate所在周的第一天

DateTime dt=BaseDate(FirstWeekDay());

TimeSpan ts=dtDate-dt;

return dt.AddDays(ts.Days/7*7);

}

//求dtDate所在周的最后一天

public DateTime LastDayOfWeek(DateTime dtDate)

{

//根据dtDate与基准日期之间间隔的天数,以基准日期为基础,来计算dtDate所在周的最后一天

DateTime dt=BaseDate(FirstWeekDay());

TimeSpan ts=dtDate-dt;

return dt.AddDays(ts.Days/7*7+6);

}

//求dtDate所在周为一年中的第几周

public int WeekNumberOfYear(DateTime dtDate)

{

dtDate=DateTime.Parse(dtDate.ToString("yyyy-MM-dd"));

//找到dtDate所在年份的00周的第一天

//前提条件是设定1月1号为00周

DateTime dt=FirstDayOfWeek(DateTime.Parse(dtDate.Year.ToString()+"-01-01"));

TimeSpan ts=dtDate-dt;

return ts.Days/7;

}

本文来源:https://www.wddqw.com/doc/dc0a0279a26925c52cc5bfbf.html