【问题标题】:Return false if the current day is a saturday or a sunday如果当前日期是星期六或星期日,则返回 false
【发布时间】:2020-12-13 18:10:22
【问题描述】:

我正在尝试检查两件事:

  1. 如果时间在指定间隔之间。
  2. 如果当天是工作日。

我从this thread找到了这段代码:

from datetime import datetime, time

def is_time_between(begin_time, end_time, check_time=None):
    # If check time is not given, default to current UTC time
    check_time = check_time or datetime.now().time() # datetime.utcnow().time()
    if begin_time < end_time:
        return check_time >= begin_time and check_time <= end_time
    else: # crosses midnight
        return check_time >= begin_time or check_time <= end_time

而且效果很棒!

但是,如果当天是周六或周日,如何返回 false

【问题讨论】:

  • datetime.now().time() 是一个 datetime.time 对象 - 它没有星期几的概念。 datetime.now() 是一个 datetime.datetime 对象,您可以对其调用 isoweekday() 方法。如果 check_time 需要一个 datetime.time 对象,则无法确定星期几。

标签: python python-3.x


【解决方案1】:

您只需要再添加一张check_time.weekday()&gt;=5 的检查,如下所示:

从日期时间导入日期时间,时间

def is_time_between(begin_time, end_time, check_time=None):
    # If check time is not given, default to current UTC time
    check_time = check_time or datetime.now() # datetime.utcnow().time()
    if check_time.weekday()>=5:
        return False
    elif begin_time < end_time:
        return check_time >= begin_time and check_time <= end_time
    else: # crosses midnight
        return check_time >= begin_time or check_time <= end_time

附:检查工作日日期信息至关重要,datetime.now().time() 中不存在这些信息。您可能想改用datetime.now()

【讨论】:

    【解决方案2】:

    您可以使用函数weekday() 来检索给定日期的工作日。如果返回值为 5 或 6,则表示是周六或周日。

    您可以在这里找到更多信息:https://docs.python.org/3/library/datetime.html#datetime.datetime.weekday

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-05
      • 2019-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多