不能在循环中多次向日期添加天数

本文关键字:日期 添加 循环 不能 | 更新日期: 2023-09-27 18:12:31

我有这个代码上的选择索引更改的下拉列表,表示月份。

    DateTime firstDate, lastDate;
    int mon = DropDownList1.SelectedIndex +1;
    int year = 2013;
    GetDates(mon, year,out firstDate , out lastDate);
    DateTime f = firstDate;
    DateTime d2 = firstDate.AddDays(7);
    for (;d2.Month  == mon;  )
    {
        d2.AddDays(7);   // value after first iteration is "08-Apr-13 12:00:00 AM"
                        // but beyond first iteration the value remains the same.
    }

    private void GetDates(int mon, int year, out DateTime firstDate, out DateTime lastDate)
    {       
        int noOfdays = DateTime.DaysInMonth(year, mon);
        firstDate = new DateTime(year, mon, 1);
        lastDate = new DateTime(year, mon, noOfdays);
    } 

我希望d2在每次迭代中保持递增7天,只要结果值在同一个月。但这个值似乎只增加了一次。从01-Apr-13 12:00:00 AM到08-Apr-13 12:00:00 AM

不能在循环中多次向日期添加天数

您必须将更改的日期对象分配回日期对象d2,因为DateTime对象不可变AddDays方法返回new对象,而不是改变调用它的对象,因此您必须将其分配回调用对象。

d2 = d2.AddDays(7);

Edit为什么它在第一次迭代中工作?

因为你通过添加7天前循环来初始化date对象。

DateTime d2 = firstDate.AddDays(7);

不应该吗?

d2 = d2.AddDays(7);