如何生成偶数日历日期?

时间:2018-11-01 00:12:58

标签: python calendar

有人知道如何在python(或其他平台)中的Calendar中生成从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年为止。

编辑:

如何在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 :(得分:1)

这似乎很简单,可以处理leap年:

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
...

编辑:

这是一种方法(我认为),您在接下来的问题中问过如何做:

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
...

答案 1 :(得分:0)

那又怎么样:

ns.connection = new WebSocket(uri); // uri would be e.g. 'ws://192.168.178.20:52998/'
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