跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
C#算法

C# 日期处理实战:计算周范围与周数

C# 日期处理实战展示了如何基于当前日期推算周起止时间及自定义周数。核心逻辑涉及 DateTime 操作与枚举转换,适用于周报统计等场景。实际使用时建议将数据库连接信息配置化,避免硬编码泄露风险。

游戏玩家发布于 2009/10/26更新于 2026/10/480 浏览
C# 日期处理实战:计算周范围与周数

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 int WeekNumber()
    {
        DateTime tNow = Convert.ToDateTime("2009-7-15");
        // 设定一个固定的基准日期作为第一周起点
        string firstDateText = "2008 年 12 月 28 日";
        DateTime firstDay = Convert.ToDateTime(firstDateText);

        int theDay = 0;
        // 根据基准日期的星期几调整偏移量
        if (firstDay.DayOfWeek == DayOfWeek.Sunday || firstDay.DayOfWeek == DayOfWeek.Monday)
        {
            theDay = 0;
        }
        else if (firstDay.DayOfWeek == DayOfWeek.Tuesday)
        {
            theDay = 1;
        }
        else if (firstDay.DayOfWeek == DayOfWeek.Wednesday)
        {
            theDay = 2;
        }
        else if (firstDay.DayOfWeek == DayOfWeek.Thursday)
        {
            theDay = 3;
        }
        else if (firstDay.DayOfWeek == DayOfWeek.Friday)
        {
            theDay = 4;
        }
        else
        {
            theDay = 5;
        }

        int weekNum = (tNow.DayOfYear + theDay) / 7 + 1;
        return weekNum;
    }
}

注意事项

  1. 安全提示:原代码中包含数据库连接字符串和密码,发布前务必移除敏感信息或使用环境变量注入。
  2. 日期基准:WeekNumber 方法依赖硬编码的 2008 年 12 月 28 日 作为基准点,如果业务规则变更,需同步修改此日期及对应的星期偏移逻辑。
  3. 类型转换:代码中将 DayOfWeek 强转为 int 进行运算,这是 C# 枚举的常见用法,但要注意不同语言对一周起始日的定义差异。

希望这个小工具能帮到你,如果有更复杂的周历需求,建议引入第三方库如 Noda Time 来处理时区和日历系统。

目录

  1. C# 日期处理实战:计算周范围与周数
  2. 核心逻辑说明
  3. 周起止日期计算
  4. 注意事项

更多推荐文章

查看全部
  • 开源飞控无人机装调与测试实战指南
  • 2025 年 AI 漫剧产业深度报告:市场格局与技术演进
  • 使用 Python 调用大模型(LLM)的四种方法
  • RLinf:面向具身智能与智能体的强化学习基础设施
  • C++ 中的栈、队列与优先队列:从使用到模拟实现
  • llama-cpp-python 本地推理引擎部署指南
  • ArcGIS SDE 数据库锁表解锁实战指南
  • AI Agent 新范式:FastGPT 集成 MCP 协议构建工具增强智能体
  • 融合手术导板与增强现实的椎弓根螺钉置入技术验证
  • 清华团队发布OpenClaw研究报告:AI智能体生态闭环全解析
  • 牛客寒假训练营第 5 场题解
  • LangGraph 实战:从零构建人工智能航空客服助手
  • Stable Diffusion WebUI Forge 照片风格迁移实战指南
  • Linux 系统远程连接 Windows 桌面配置方法
  • Spring Cloud 与 Dubbo 架构对比及混合实践指南
  • 使用 DeepSeek 辅助开发高性能贪吃蛇游戏
  • Win10 升级后频繁弹出 Microsoft 365 Copilot 窗口如何禁用
  • IndexTTS2 WebUI 接口分析与 Python 自动化调用实践
  • 位运算在算法优化中的实战应用
  • 时序数据库选型指南:Apache IoTDB 优势与实践

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online