周数的计算问题 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
正在阅读:
计算周数01-01
加强粮食企业财务管理的思考——对宜昌县23家粮食企业的调查01-01
第十三届“挑战杯”全国大学生课外学术科技作品竞赛 - 海南大学01-01
小学数学教师应具备的素养01-01
那些被起过的外号,01-01
清明扫墓活动总结01-01
逆袭作文800字全面版01-01
形容词和副词做状语辅导01-01
标准的检讨书格式01-01