Найдите дату В прошлое воскресенье октября в ASP.NET c#

Поскольку в большинстве целей любой будет работать, и RSS имеет преимущество того, чтобы быть акронимом, который определяет категорию.

Кроме того необходимо было бы послать отдельные сайты по электронной почте и спросить их.

5
задан Jibu P Cherian 25 November 2009 в 07:51
поделиться

3 ответа

Для этого нет необходимости запускать цикл:

private static DateTime GetLastWeekdayOfMonth(DateTime date, DayOfWeek day)
{
    DateTime lastDayOfMonth = new DateTime(date.Year, date.Month, 1)
        .AddMonths(1).AddDays(-1);
    int wantedDay = (int)day;
    int lastDay = (int)lastDayOfMonth.DayOfWeek;
    return lastDayOfMonth.AddDays(
        lastDay >= wantedDay ? wantedDay - lastDay : wantedDay - lastDay - 7);
}

Его можно легко преобразовать в метод расширения, например:

public static class DateTimeExtensions
{
    public static DateTime GetLastWeekdayOfMonth(this DateTime date, DayOfWeek day)
    {
        DateTime lastDayOfMonth = new DateTime(date.Year, date.Month, 1)
            .AddMonths(1).AddDays(-1);
        int wantedDay = (int)day;
        int lastDay = (int)lastDayOfMonth.DayOfWeek;
        return lastDayOfMonth.AddDays(
            lastDay >= wantedDay ? wantedDay - lastDay : wantedDay - lastDay - 7);
    }
}

... и затем использовать его непосредственно из любой объект DateTime:

DayOfWeek lastSunday = DateTime.Now.GetLastWeekdayOfMonth(DayOfWeek.Sunday);

Обновление: исправлена ​​ошибка.

16
ответ дан 18 December 2019 в 13:15
поделиться

Вы можете попробовать что-то вроде этого

DateTime date = new DateTime(2009, 10, 01);
date = date.AddMonths(1).AddDays(-1);
while (date.DayOfWeek != DayOfWeek.Sunday) date = date.AddDays(-1);

или также попробовать

date = date.AddDays(-(int)date.DayOfWeek);
0
ответ дан 18 December 2019 в 13:15
поделиться
DateTime current = new DateTime(DateTime.Today.Year, 
    10, DateTime.DaysInMonth(DateTime.Today.Year, 10));

while (current.DayOfWeek != DayOfWeek.Sunday)
{
    current = current.AddDays(-1);
}

Console.WriteLine(current.ToLongDateString());

Я оставил его открытым, чтобы вы могли легко поменять месяц с параметром.

0
ответ дан 18 December 2019 в 13:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: