【问题标题】:Python - Check every other week using if statementPython - 使用 if 语句每隔一周检查一次
【发布时间】:2021-09-12 15:24:04
【问题描述】:

我有以下 if 语句:

if date.weekday() != 0:

如何更改此 if 语句以每隔一周检查一次(每隔一周检查一天)?

提前感谢您的帮助!

【问题讨论】:

    标签: python date if-statement calendar


    【解决方案1】:

    您的帖子没有提及您使用的语言。知道这会很有用!

    无论如何,像weekday 这样的函数可能会返回一个从 0 到 6 的数字,这不会为您提供足够的信息。

    大多数语言都具有将日期转换为毫秒值的功能,通常是从 1970-01-01 00:00 UTC 开始的毫秒数。

    如果你取这样一个值并除以 86400000(一天中的毫秒数),你就会得到一个天数。第 0 天(1970 年 1 月 1 日)恰好是星期四。

    在 JavaScript 中,这一天数可以从 Date 对象中获取,如下所示:

    let dayNum = Math.floor(someDate.getTime() / 86400000)

    据此,dayNum % 7 为您提供周四至周三的 0-6 数字。您可以添加偏移量来更改 0 的含义。 (dayNum + 4) % 7 从周日到周六产生 0-6。

    您希望每隔一周有一个 14 天的周期,因此您需要 dayNum % 14,然后您只需决定 0 到 13 之间的哪个值代表您的目标日期。

    选取您想要的日期之一的任何样本日期,计算您在该日期获得的剩余值,然后测试该值是否能够匹配任何合格日期。

    两个警告:

    1. 对于 1970 年之前的日期,% 运算符可能会产生负数。 Python 是少数不这样做的语言之一。

    2. 与 UTC 的时区偏移可能对您的任务很重要。如果这很重要,夏令时变化和/或 UTC 偏移的历史变化可能会使事情复杂化。

    Python 更新:

    假设即将到来的星期一(2021 年 7 月 5 日)是您想要的每隔一周的日子之一。这个:

    date(2021, 7, 5).toordinal() % 14

    ...产生一个 8 的值。之前或之后的每个星期一也将是 8。toordinal() 方法直接得到一个天数,而不必担心毫秒、86400000 或不必担心时区偏移量。

    【讨论】:

    • 我正在使用 Python。如有任何混淆,请见谅!
    • 我将使用 Python 特定的解决方案添加到我的答案中。
    • Python 版本有帮助吗? (如果是,请投票!)
    猜你喜欢
    • 2019-01-12
    • 1970-01-01
    • 2021-08-26
    • 1970-01-01
    • 1970-01-01
    • 2014-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多