winform点击按钮控制DateTimePicker控件的时间周一到周日时间

如何使用winform的按钮控件控制DateTimePicker控件的时间变化;
比如,我点击一个本周按钮,DateTimePicker控件的时间显示为:2023-06-19至2023-06-25
点击本周按钮时,时间默认从周一到周日结束;
我点击一个本月按钮,DateTimePicker控件的时间显示为:2023-06-01至2023-06-30
我点击一个上月按钮,DateTimePicker控件的时间显示为:2023-05-01至2023-05-31
我点击一个近两周按钮,DateTimePicker控件的时间显示为:2023-06-12至2023-06-25
点击近两周按钮时,时间也是默认从周一到周日结束;

img

你可以参考以下代码:

private void ThisWeekButton_Click(object sender, EventArgs e)
{
    DateTime startDate = DateTime.Today.AddDays(-(int)DateTime.Today.DayOfWeek);
    DateTime endDate = startDate.AddDays(6);

    dateTimePicker1.Value = startDate;
    dateTimePicker1.CustomFormat = "yyyy-MM-dd";
    dateTimePicker1.Format = DateTimePickerFormat.Custom;
    dateTimePicker1.Value = endDate;
}


private void ThisMonthButton_Click(object sender, EventArgs e)
{
    DateTime startDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
    DateTime endDate = startDate.AddMonths(1).AddDays(-1);

    dateTimePicker1.Value = startDate;
    dateTimePicker1.CustomFormat = "yyyy-MM-dd";
    dateTimePicker1.Format = DateTimePickerFormat.Custom;
    dateTimePicker1.Value = endDate;
}

private void LastMonthButton_Click(object sender, EventArgs e)
{
    DateTime startDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1).AddMonths(-1);
    DateTime endDate = startDate.AddMonths(1).AddDays(-1);

    dateTimePicker1.Value = startDate;
    dateTimePicker1.CustomFormat = "yyyy-MM-dd";
    dateTimePicker1.Format = DateTimePickerFormat.Custom;
    dateTimePicker1.Value = endDate;
}

private void TwoWeeksButton_Click(object sender, EventArgs e)
{
    DateTime startDate = DateTime.Today.AddDays(-13);
    DateTime endDate = DateTime.Today;

    dateTimePicker1.Value = startDate;
    dateTimePicker1.CustomFormat = "yyyy-MM-dd";
    dateTimePicker1.Format = DateTimePickerFormat.Custom;
    dateTimePicker1.Value = endDate;
}

img


以下是完整的代码:


        private int DayOfWeek;
        DateTime dt = DateTime.Now;  //当前时间
        public TimeFrm()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
           
            DateTime startDate = dt.AddDays(1 - Convert.ToInt32(dt.DayOfWeek.ToString("d")));  //获取本周的周一日期
            Console.WriteLine("本周周一是:" + startDate);
            DateTime endDate = startDate.AddDays(6); // 获取本周日的日期
            Console.WriteLine("本周周日是:" + endDate);

            dateTimePicker1.Value = startDate;
            dateTimePicker2.Value = endDate;
        }