C# 日期处理实战:计算周范围与周数
在实际业务开发中,经常需要按周维度统计数据,比如生成周报或者发放周奖。下面分享一段 C# 代码,实现了根据指定日期自动计算当周的起止时间,并结合自定义基准日计算周数的功能。
核心逻辑说明
这段代码主要包含两个方法:WeekShow 用于生成周标题,WeekNumber 用于计算当前是第几周。
周起止日期计算
在 WeekShow 方法中,我们利用 DateTime.AddDays 配合 DayOfWeek 枚举来定位本周的周一和周日。需要注意的是,C# 默认 DayOfWeek.Sunday 为 0,而国内习惯通常以周一为一周的开始。代码中通过偏移量计算,确保能准确截取到对应范围的日期字符串。
public class WeekDateShow
{
// 生产环境请务必使用配置文件管理连接串,切勿硬编码密码
private const string ConStr = "Data Source=orcl;Persist Security Info=True;User ID=hr;Password=<your_password>;Unicode=True";
public static string WeekShow()
{
// 模拟当前日期,实际使用时请替换为 DateTime.Now
DateTime tNow = Convert.ToDateTime("2009-7-15");
// 计算本周起始日期(假设周一开始)
string tb1 = tNow.AddDays((0 - (int)tNow.DayOfWeek) - 7 + 1).ToShortDateString();
// 计算本周结束日期
string tb2 = tNow.AddDays((6 - (int)tNow.DayOfWeek) - 7 + 1).ToShortDateString();
return tb1 + "―" + tb2 + "第" + (WeekNumber() - 1).ToString() + "期周奖入选名单";
}
private static ()
{
DateTime tNow = Convert.ToDateTime();
firstDateText = ;
DateTime firstDay = Convert.ToDateTime(firstDateText);
theDay = ;
(firstDay.DayOfWeek == DayOfWeek.Sunday || firstDay.DayOfWeek == DayOfWeek.Monday)
{
theDay = ;
}
(firstDay.DayOfWeek == DayOfWeek.Tuesday)
{
theDay = ;
}
(firstDay.DayOfWeek == DayOfWeek.Wednesday)
{
theDay = ;
}
(firstDay.DayOfWeek == DayOfWeek.Thursday)
{
theDay = ;
}
(firstDay.DayOfWeek == DayOfWeek.Friday)
{
theDay = ;
}
{
theDay = ;
}
weekNum = (tNow.DayOfYear + theDay) / + ;
weekNum;
}
}

