我有以下if语句:
if date.weekday() != 0:
如何将此if对账单更改为每隔一个星期一(每隔一周一天(检查一次?
提前感谢您的帮助!
您的帖子没有提到您使用的语言。知道这一点会很有用!
无论如何,像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中的哪个值代表你的目标日期。
取任意一个您想要的日期样本,计算该日期的余数,然后测试该值是否能够匹配任何符合条件的日期。
两个注意事项:
-
对于1970年之前的日期,
%
运算符可能会产生负数。Python是为数不多的不这样做的语言之一。 -
与UTC的时区偏移量可能对您的任务很重要。如果这很重要的话,夏令时的变化和/或UTC偏移量的历史变化可能会使事情复杂化。
Python更新:
假设下周一(2021年7月5日(是你们想要的每隔一周的一天。此:
date(2021, 7, 5).toordinal() % 14
产生值8。每隔一个星期一之前或之后也是8点。toordinal()
方法直接返回一个日期,而不必为86400000毫秒而烦恼,也不必担心时区偏移。