Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 每个月的第二个星期二_Python_Datetime_Calendar - Fatal编程技术网

Python 每个月的第二个星期二

Python 每个月的第二个星期二,python,datetime,calendar,Python,Datetime,Calendar,如何获得本月第二个上周二的日期 import calendar todayyear= date.datetime.today().year todayday = date.datetime.today().day c = calendar.TextCalendar(calendar.SUNDAY) str = c.formatmonth(todayyear,todayday) print(str) October 2020 Su Mo Tu We Th Fr Sa

如何获得本月第二个上周二的日期

import calendar
todayyear= date.datetime.today().year
todayday = date.datetime.today().day
c = calendar.TextCalendar(calendar.SUNDAY)
str = c.formatmonth(todayyear,todayday)
print(str)

    October 2020
Su Mo Tu We Th Fr Sa
             1  2  3
 4  5  6  7  8  9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
我需要打印出本月第二个上周二的日期,在这个特殊情况下是20号,但它应该适用于任何月份。请告知如何做到这一点

你可以试试这个

weeks=str.split('\n')
if len(weeks[-1].split())<3: print(weeks[-3][2])
else: print(weeks[-2][2])
weeks=str.split('\n')
如果len(weeks[-1].split())你可以试试这个

weeks=str.split('\n')
if len(weeks[-1].split())<3: print(weeks[-3][2])
else: print(weeks[-2][2])
weeks=str.split('\n')
如果len(周[-1].split())去救援

您将需要执行以下操作:

  • 获取当月的最后日期
  • 使用相对detla将该日期转换为一天
  • 按日期将一天倒推到星期二(这是一个月的最后一个星期二)
  • 从该日期减去一周
  • 正如你所知道的,小心营救的日期

    您将需要执行以下操作:

  • 获取当月的最后日期
  • 使用相对detla将该日期转换为一天
  • 按日期将一天倒推到星期二(这是一个月的最后一个星期二)
  • 从该日期减去一周

  • 正如你所知道的,小心日期和日期,你似乎可以从中获取所有日期,并按日期和月份进行过滤。然后用
    [-2]

    import calendar
    
    c = calendar.Calendar()
    year = 2020
    day = 1
    
    for month in range(1, 13):
        secondLastTues = list(filter(lambda d:d[3] == day and d[1] == month, 
                                     c.itermonthdays4(year, month)))[-2]
        print(secondLastTues)
    
    结果:

    (2020, 1, 21, 1)
    (2020, 2, 18, 1)
    (2020, 3, 24, 1)
    (2020, 4, 21, 1)
    (2020, 5, 19, 1)
    (2020, 6, 23, 1)
    (2020, 7, 21, 1)
    (2020, 8, 18, 1)
    (2020, 9, 22, 1)
    (2020, 10, 20, 1)
    (2020, 11, 17, 1)
    (2020, 12, 22, 1)
    

    看起来你可以从中获取所有的日期,并按日期和月份进行过滤。然后用
    [-2]

    import calendar
    
    c = calendar.Calendar()
    year = 2020
    day = 1
    
    for month in range(1, 13):
        secondLastTues = list(filter(lambda d:d[3] == day and d[1] == month, 
                                     c.itermonthdays4(year, month)))[-2]
        print(secondLastTues)
    
    结果:

    (2020, 1, 21, 1)
    (2020, 2, 18, 1)
    (2020, 3, 24, 1)
    (2020, 4, 21, 1)
    (2020, 5, 19, 1)
    (2020, 6, 23, 1)
    (2020, 7, 21, 1)
    (2020, 8, 18, 1)
    (2020, 9, 22, 1)
    (2020, 10, 20, 1)
    (2020, 11, 17, 1)
    (2020, 12, 22, 1)
    

    请告诉我它是否有效。我是新来的,这将有助于我的自尊。请告诉我它是否有效。我是新来的,这将有助于我的自尊。使用lambda与理解类似-
    [d代表列表中的d(c.itermonthdays4(年,月)),如果d[3]==day][2]
    ?@davest我认为理解也很好。但是我认为你需要检查月份(
    d[1]==month
    ),因为
    calendar
    不只是给出给定月份内的日期。使用lambda与理解类似于-
    [d代表列表中的d(c.itermonthdays4(年,月))的任何特殊原因,如果d[3]==day][/code>?@davestwhere我认为理解也很好。但我认为您需要检查月份(
    d[1]==month
    ),因为
    calendar
    不只是给出给定月份内的日期。我使用:
    now+relativedelta(day=31,weekday=TU(-2))
    来自相对增量。我只是想弄明白为什么我甚至需要指定day=31?Relative delta是随时间变化的“相对”。31天是一个月中最长的一天,所以“相对而言”是每个月的最后一天。这有意义吗?我想,既然它已经不能继续了,为什么还要指定31呢?我只是在想是否有任何理由任何人都需要使用28。我使用了:
    now+relativedelta(day=31,weekday=TU(-2))
    from relative delta。我只是想弄明白为什么我甚至需要指定day=31?Relative delta是随时间变化的“相对”。31天是一个月中最长的一天,所以“相对而言”是每个月的最后一天。这有意义吗?我想,既然它已经不能继续了,为什么还要指定31呢?我只是在想,是否有任何理由任何人都需要使用28。