C# 我需要在两个日期文本框中设置默认日期,以指定从日期到日期的日期范围

C# 我需要在两个日期文本框中设置默认日期,以指定从日期到日期的日期范围,c#,C#,我需要根据当前日期获取上周六的最后一个星期六和前一个星期日(例如,如果今天是2014年5月21日,我需要获取2014年5月17日(星期六)和2014年5月11日(星期日)),如果今天是星期六,则应该是今天的日期和最后一个星期日(例如,如果今天是2014年5月24日,我应该获取2014年5月18日) 这是我试图完成的,但它没有给我正确的输出 DateTime currentDate = DateTime.Today; int offset = cur

我需要根据当前日期获取上周六的最后一个星期六和前一个星期日(例如,如果今天是2014年5月21日,我需要获取2014年5月17日(星期六)和2014年5月11日(星期日)),如果今天是星期六,则应该是今天的日期和最后一个星期日(例如,如果今天是2014年5月24日,我应该获取2014年5月18日)

这是我试图完成的,但它没有给我正确的输出

            DateTime currentDate = DateTime.Today;
            int offset = currentDate.DayOfWeek - DayOfWeek.Sunday;
            offset = (offset < 0) ? 6 : offset;
            string strCulture =  System.Globalization.CultureInfo.CurrentCulture.Name;

            if (currentDate.DayOfWeek == DayOfWeek.Saturday)
            {
                txtStartDate.Text = strCulture == "en-US" ? currentDate.AddDays(-offset).ToString("MM-dd-yyyy") : currentDate.AddDays(-offset).ToString("dd-MM-yyyy") ;
                txtEndDate.Text = strCulture == "en-US" ? currentDate.ToString("MM-dd-yyyy") : currentDate.ToString("dd-MM-yyyy");
            }
            else
            {
                offset = currentDate.DayOfWeek - DayOfWeek.Saturday;
                offset = (offset < 0) ? 6 : offset;
                DateTime lastSaturday = DateTime.Today.AddDays(-offset);
                offset = lastSaturday.DayOfWeek - DayOfWeek.Sunday;
                offset = (offset < 0) ? 6 : offset;
                DateTime lastSunday = lastSaturday.AddDays(-offset);
                txtStartDate.Text = strCulture == "en-US"? lastSunday.ToString("MM-dd-yyyy"):lastSunday.ToString("dd-MM-yyyy");
                txtEndDate.Text = strCulture == "en-US" ? lastSaturday.ToString("MM-dd-yyyy") : lastSaturday.ToString("dd-MM-yyyy");
            }
DateTime currentDate=DateTime.Today;
int offset=currentDate.DayOfWeek-DayOfWeek.Sunday;
偏移量=(偏移量<0)?6:偏移量;
字符串struclture=System.Globalization.CultureInfo.CurrentCulture.Name;
如果(currentDate.DayOfWeek==DayOfWeek.Saturday)
{
txtStartDate.Text=struclture==“en US”?currentDate.AddDays(-offset).ToString(“MM dd yyyy”):currentDate.AddDays(-offset).ToString(“dd MM yyyy”);
txtEndDate.Text=struclture==“en-US”?currentDate.ToString(“MM-dd-yyyy”):currentDate.ToString(“dd-MM-yyyy”);
}
其他的
{
偏移量=currentDate.DayOfWeek-DayOfWeek.Saturday;
偏移量=(偏移量<0)?6:偏移量;
DateTime lastSaturday=DateTime.Today.AddDays(-offset);
偏移量=lastSaturday.DayOfWeek-DayOfWeek.Sunday;
偏移量=(偏移量<0)?6:偏移量;
DateTime lastSunday=lastSaturday.AddDays(-offset);
txtStartDate.Text=struclture==“en US”?lastSunday.ToString(“MM dd yyyy”):lastSunday.ToString(“dd MM yyyy”);
txtEndDate.Text=struclture==“en US”?lastSaturday.ToString(“MM dd yyyy”):lastSaturday.ToString(“dd MM yyyy”);
}

您可以使用DateTime.Now.DayOfWeek获取一周中的哪一天。 然后通过减去与前一个星期日相等的天数来获得前一个星期日,因为星期日的值为0

int days = (int)DateTime.Now.DayOfWeek;
DateTime lastSunday = DateTime.Now.AddDays(-days);

嗨,苏丹,谢谢你的代码,但我不明白为什么要找到一周的星期一。如果今天是星期一,那么offest变为0,上周六将变为19,而不是17。如果你能找到当前的星期一,你可以从算术上找到上周六和周日。顺便说一下,亚洲一周的第一天是星期一感谢Sultan的解释,但我需要找到上周日,即使是上述代码,也存在一些问题,例如如果今天是星期一或星期天,那么上周六的日期与上述事件相同,如果今天是星期天,那么偏移量再次变为-1,上周六的日期变为错误,我刚刚测试过,工作正常,但是,是的,星期天的问题
var today = DateTime.Now.Date;
DateTime lastSaturday, lastSunday;
if(today.DayOfWeek == DayOfWeek.Saturday)
{
    lastSaturday = today;        
}
else
{
    int offset = today.DayOfWeek - DayOfWeek.Monday;

    var moday = today.AddDays(-offset);// Monday of current week
    lastSaturday = monday.AddDays(-2);
}
lastSunday = lastSaturday.AddDays(-6);