Как создать четные календарные даты? - PullRequest
0 голосов
/ 01 ноября 2018

Кто-нибудь знает, как сгенерировать список в Календаре на python (или другой платформе) с "четными днями", месяцем и годом с 2018 по 2021 год?

Пример:

Sun, 02 Jan 2019
Tue, 04 Jan 2019
Thur, 06 Jan 2019
Sat, 08 Jan 2019
Sun, 10 Jan 2019
Tue, 12 Jan 2019
Thur, 14 Jan 2019
Sat, 16 Jan 2019
Sun, 18 Jan 2019
Tue, 20 Jan 2019
Thur, 22 Jan 2019

и так далее, соблюдая календарь до 2021 года.

EDIT:

как создать в python календарь с 2018 по 2022 год в 2 форматах:

День недели, Дата Месяц Год Время (часы: минуты: секунды) - Год-месяц-Дата Время (часы: минуты: секунды)

Примечание: Даты: только сверстники расписание: случайно сгенерированные графики

Пример:

Tue, 02 Jan 2018 00:59:23  -   2018-01-02  00:59:23
Thu, 04 Jan 2018 10:24:52  -   2018-01-04  10:24:52
Sat, 06 Jan 2018 04:11:09  -   2018-01-06  04:11:09
Mon, 08 Jan 2018 16:12:40  -   2018-01-08  16:12:40
Wed, 10 Jan 2018 10:08:15  -   2018-01-10  10:08:15
Fri, 12 Jan 2018 07:10:09  -   2018-01-12  07:10:09
Sun, 14 Jan 2018 11:50:10  -   2018-01-14  11:50:10
Tue, 16 Jan 2018 02:29:22  -   2018-01-16  02:29:22
Thu, 18 Jan 2018 19:07:20  -   2018-01-18  19:07:20
Sat, 20 Jan 2018 08:50:13  -   2018-01-20  08:50:13
Mon, 22 Jan 2018 02:40:02  -   2018-01-22  02:40:02

и т. Д. До 2022 года ...

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Вот что-то довольно простое, что, кажется, работает и справляется с високосными годами:

from calendar import isleap
from datetime import date

# Days in each month (1-12).
MDAYS = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

def dim(year, month):
    """ Number of days in month of the given year. """
    return MDAYS[month] + ((month == 2) and isleap(year))

start_year, end_year = 2018, 2021

for year in range(start_year, end_year+1):
    for month in range(1, 12+1):
        days = dim(year, month)
        for day in range(1, days+1):
            if day % 2 == 0:
                dt = date(year, month, day)
                print(dt.strftime('%a, %d %b %Y'))

Выход:

Tue, 02 Jan 2018
Thu, 04 Jan 2018
Sat, 06 Jan 2018
Mon, 08 Jan 2018
Wed, 10 Jan 2018
Fri, 12 Jan 2018
Sun, 14 Jan 2018
Tue, 16 Jan 2018
...

Edit:

Вот способ сделать то, что (я думаю) вы спросили, как это сделать в своем последующем вопросе:

from calendar import isleap
from datetime import date, datetime, time
from random import randrange

# Days in each month (1-12).
MDAYS = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

def dim(year, month):
    """ Number of days in month of the given year. """
    return MDAYS[month] + ((month == 2) and isleap(year))

def whenever():
    """ Gets the time value. """
    # Currently just returns a randomly selected time of day.
    return time(*map(randrange, (24, 60, 60)))  # hour:minute:second

start_year, end_year = 2018, 2021

for year in range(start_year, end_year+1):
    for month in range(1, 12+1):
        days = dim(year, month)
        for day in range(1, days+1):
            if day % 2 == 0:
                dt, when = date(year, month, day), whenever()
                dttm = datetime.combine(dt, when)
                print(dt.strftime('%a, %d %b %Y'), when, '-', dttm)

Выход:

Tue, 02 Jan 2018 00:54:02 - 2018-01-02 00:54:02
Thu, 04 Jan 2018 10:19:51 - 2018-01-04 10:19:51
Sat, 06 Jan 2018 22:48:09 - 2018-01-06 22:48:09
Mon, 08 Jan 2018 06:48:46 - 2018-01-08 06:48:46
Wed, 10 Jan 2018 14:01:54 - 2018-01-10 14:01:54
Fri, 12 Jan 2018 05:42:43 - 2018-01-12 05:42:43
Sun, 14 Jan 2018 21:42:37 - 2018-01-14 21:42:37
Tue, 16 Jan 2018 08:08:39 - 2018-01-16 08:08:39
...
0 голосов
/ 01 ноября 2018

А как же:

import datetime

d = datetime.date.today()                       # Define Start date
while d.year <= 2021:                           # This will go *through* 2012
        if d.day % 2 == 0:                      # Print if even date
                print(d.strftime('%a, %d %b %Y'))
        d += datetime.timedelta(days=1)         # Jump forward a day
Wed, 31 Oct 2018
Fri, 02 Nov 2018
Sun, 04 Nov 2018
Tue, 06 Nov 2018
Thu, 08 Nov 2018
Sat, 10 Nov 2018
Mon, 12 Nov 2018
Wed, 14 Nov 2018
Fri, 16 Nov 2018
Sun, 18 Nov 2018
Tue, 20 Nov 2018
Thu, 22 Nov 2018
...
Fri, 24 Dec 2021
Sun, 26 Dec 2021
Tue, 28 Dec 2021
Thu, 30 Dec 2021
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...