我需要在两个日期文本框中默认日期,以指定日期和日期的日期范围

时间:2014-05-21 10:24:45

标签: c#

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

这是我想要完成但它没有给我正确的输出

            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");
            }

2 个答案:

答案 0 :(得分:1)

您可以使用DateTime.Now.DayOfWeek获取星期几。 然后通过减去等于那天的天数来到达上一个星期日,因为星期日的值为0.

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

答案 1 :(得分:0)

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);