You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中设置属性以自动打印当前周的周一日期?

在C#中获取并自动打印当前周周一日期的实现方法

问题分析

需求是自动获取并打印当前周的周一日期,原代码存在两处问题:

  1. 扩展方法MondayOfCurrentWeek未使用传入的dt参数,固定依赖DateTime.Now,丢失了扩展方法的灵活性;
  2. 扩展方法调用方式错误,扩展方法需通过DateTime实例调用,而非类名直接调用。

修正后的实现方案

1. 正确的扩展方法(支持任意日期获取所在周的周一)

public static class DateTimeExtensions
{
    // 扩展方法:获取指定日期所在周的周一
    public static DateTime MondayOfCurrentWeek(this DateTime dt)
    {
        // DayOfWeek枚举中周日为0、周一为1,计算日期偏移量
        int offset = (int)dt.DayOfWeek - (int)DayOfWeek.Monday;
        // 若当前是周日,偏移量为-1,需调整为+6(周日属于上一周周一之后第6天)
        if (offset < 0)
            offset += 7;
        return dt.AddDays(-offset).Date; // 仅保留日期部分,去除时分秒
    }
}

2. 实现自动返回周一日期的属性

如果要在Document类中添加属性,自动返回当前周的周一,可编写如下代码:

public class Document
{
    // 只读属性:返回当前系统时间所在周的周一
    public DateTime CurrentWeekMonday => DateTime.Now.MondayOfCurrentWeek();
}

3. 调用并打印结果

var document = new Document();
Console.WriteLine($"Document date - {document.CurrentWeekMonday}");

补充说明

  • 扩展方法必须放在静态类中才能生效;
  • 使用Date属性可以剥离时间部分,仅保留纯日期;
  • 代码适配了DayOfWeek的枚举规则,避免周日场景下的计算错误。

内容的提问来源于stack exchange,提问作者Veronika Novikova

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 17:37:03