Получить дату предыдущего и следующего месяца в пользовательском календаре текущего месяца с помощью c #? [Дубликат]

from django.utils.translation import ngettext

def localize_timedelta(delta):
    ret = []
    num_years = int(delta.days / 365)
    if num_years > 0:
        delta -= timedelta(days=num_years * 365)
        ret.append(ngettext('%d year', '%d years', num_years) % num_years)

    if delta.days > 0:
        ret.append(ngettext('%d day', '%d days', delta.days) % delta.days)

    num_hours = int(delta.seconds / 3600)
    if num_hours > 0:
        delta -= timedelta(hours=num_hours)
        ret.append(ngettext('%d hour', '%d hours', num_hours) % num_hours)

    num_minutes = int(delta.seconds / 60)
    if num_minutes > 0:
        ret.append(ngettext('%d minute', '%d minutes', num_minutes) % num_minutes)

    return ' '.join(ret)

Это даст:

>>> from datetime import timedelta
>>> localize_timedelta(timedelta(days=3660, minutes=500))
'10 years 10 days 8 hours 20 minutes'
0
задан jsonGPPD 25 June 2018 в 03:10
поделиться

1 ответ

Чтобы сгенерировать календарь в виде таблицы, вам нужно создать сетку строк из шести столбцов x 6, чтобы разрешить все возможные месяцы, поэтому цикл должен повторяться 42 раза (а не количество дней в месяце), где первый ячейка - последнее воскресенье предыдущего месяца (если текущий месяц не начинается в воскресенье)

Чтобы вычислить дату в первой ячейке, используйте

DateTime startDate = firstDayOfTheMonth.AddDays(-(int)firstDayOfTheMonth.DayOfWeek);

Затем, чтобы сгенерировать таблица в вашем представлении

<table>
    <thead>
        .... // add day name headings
    </thead>
    <tbody>
        <tr>
            @for (int i = 0; i < 42; i++)
            {
                DateTime date = startDate.AddDays(i);
                if (i % 7 == 0 && i > 0)
                {
                    @:</tr><tr> // start a new row every 7 days
                }
                <td>@date.Day</td>
            }
        </tr>
    </tbody>
</table>

Вы также можете стилизовать любые дни не в текущем месяце по-разному, и в этом случае вы можете условно добавить имя класса, например

if (startDate.Month == getDate.month)
{
    <td class="current">@date.Day</td>
}
else
{
    <td>@date.Day</td>
}
1
ответ дан Stephen Muecke 15 August 2018 в 23:33
поделиться
  • 1
    О, спасибо, сэр, это работает! и спасибо за подсказку – jsonGPPD 25 June 2018 в 11:34
Другие вопросы по тегам:

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