【问题标题】:Return number of weekdays for a specific date (Python)返回特定日期的工作日数(Python)
【发布时间】:2020-01-09 15:23:46
【问题描述】:

我需要根据每月工作日的给定日期计算价格。 这是我目前正在使用的:

month = time.month
year = time.year
weekdays = 0
cal = calendar.Calendar()
for day in cal.itermonthdates(year, month):
  if day.weekday() == 6 and day.month == month:
    weekdays += 1

但这并不依赖于给定的日期。 我希望它返回 6 表示日期 10.01.2020,或 6 表示 03.01.2020 或 4 表示 06.01.2020。 任何帮助都会非常好。

【问题讨论】:

  • 03.01.2020 表示 1 月 3 日对吧?
  • 是的!德语日期格式。
  • 您能否解释一下“基于每月工作日的给定日期”是什么意思?如果这更容易的话,我会懂德语。
  • “特定日期的工作日数”是什么意思?
  • Ich habe ein Datum und muss wissen wieviel mal dieser Wochentag im Monat vorkommt。为了澄清我不需要给定日期的工作日。我需要计算一个月内这个工作日发生的频率。

标签: python date calendar


【解决方案1】:

以下可能是一种干巴巴的方法:

import datetime
# ...

prev_day = time.day - datetime.timedelta(days=1)
month = time.month
year = time.year

cal = calendar.Calendar()
days_iterator = cal.itermonthdates(year, month)

while next(days_iterator) != prev_day:
    pass

weekdays = 0
for d in days_iterator:
  if d.weekday() == 6 and d.month == month:
    weekdays += 1

【讨论】:

    【解决方案2】:

    试试这个:

    import datetime
    d=datetime.date(2020, 1, 10) #Format YYYY, MM, DD
    print(d.isoweekday())
    

    现在这将打印 5 而不是 6,因为它是星期五并且计数从星期一开始(使用 isoweekday 而不是 weekday 将使计数从 1 而不是 0 开始)但是如果你想要你的一周应该有一个简单的修复从周日开始,只需加 1 并计算模 7:

    print((d.isoweekday()+1)%7)
    

    https://docs.python.org/3/library/datetime.html

    【讨论】:

      猜你喜欢
      • 2014-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-15
      • 1970-01-01
      • 2018-11-11
      相关资源
      最近更新 更多