需要功能才能获得当周的第一天和最后一天

Hit*_*esh -1 c# datetime dayofweek datetime-format

我有两个标签第一天和最后一天,我想在按钮点击时更新它.

我需要函数来获取当前日期的第一天和最后一天,以便我可以在点击下一个和上一个按钮时显示它.

这是我到目前为止:

CultureInfo cultureInfo = CultureInfo.CurrentCulture; 
DayOfWeek firstDay = cultureInfo.DateTimeFormat.FirstDayOfWeek; 
firstDayInWeek = dayInWeek.Date; 
lastDayInWeek = dayInWeek.Date; 
while (firstDayInWeek.DayOfWeek != firstDay) 
    firstDayInWeek = firstDayInWeek.AddDays(-1);
Run Code Online (Sandbox Code Playgroud)

但是在这个月之后的下个星期没有给我.

这正是我正在寻找的:

任何人都可以帮助使用单一功能使其工作.

Nas*_*ine 6

试试这个 :

private static void GetWeek(DateTime now, CultureInfo cultureInfo, out DateTime begining, out DateTime end)
{
    if (now == null)
        throw new ArgumentNullException("now");
    if (cultureInfo == null)
        throw new ArgumentNullException("cultureInfo");

    var firstDayOfWeek = cultureInfo.DateTimeFormat.FirstDayOfWeek;

    int offset = firstDayOfWeek - now.DayOfWeek;
    if (offset != 1)
    {
        DateTime weekStart = now.AddDays(offset);
        DateTime endOfWeek = weekStart.AddDays(6);
        begining = weekStart;
        end = endOfWeek;
    }
    else
    {
        begining = now.AddDays(-6);
        end = now;
    }
}
Run Code Online (Sandbox Code Playgroud)

用法示例:

DateTime begining;
DateTime end;

var testDate = new DateTime(2012, 10, 10);
GetWeek(testDate, new CultureInfo("fr-FR"), out begining, out end);
Console.WriteLine("Week {0} - {1}", 
                  begining.ToShortDateString(), 
                  end.ToShortDateString()); // will output Week 10/8/2012 - 10/14/2012
Run Code Online (Sandbox Code Playgroud)


小智 6

DateTime baseDate = DateTime.Now;
var thisWeekStart = baseDate.AddDays(-(int)baseDate.DayOfWeek);
var thisWeekEnd = thisWeekStart.AddDays(7).AddSeconds(-1);
Run Code Online (Sandbox Code Playgroud)