现在的自动化里重复只有每天每周和每月,但是明明其他地方的重复是可以支持每隔 3 天这种方法的
有没有办法曲线实现每隔三天执行一次自动化呢?
![]() | 1 yzding 2024-04-17 10:29:02 +08:00 via iPhone 每天执行一次,然后判断当前日期是否是 3 的倍数? |
2 facebook47 2024-04-17 10:30:19 +08:00 via Android 每 72 小时 |
![]() | 3 huaxianyan OP |
![]() | 4 zsj1029 2024-04-17 10:57:07 +08:00 crontab 了可以设置*/3 每三小时,同理可以设置三天 一楼也说了思路,每天的话,程序判断三天。 既然执行任务,可以看看有没有持久化记录上次执行时间,然后看看是否满足三天间隔 |
![]() | 5 icestraw 2024-04-17 11:02:24 +08:00 你自己用 每天执行一次,然后时间戳把毫秒转换成天,然后再 mod3 |
![]() | 6 huaxianyan OP @zsj1029 这个思路有尝试过,但是对比日期这块卡住了,想每次执行的时候把时间写到本机的一个文本内,然后下次执行的时候读取进行对比,不过读和写试了很多项都不对 |
![]() | 7 dingdangnao 2024-04-17 11:09:37 +08:00 写个接口 自己做逻辑判断 每三天返回 1 其他时间返回 0 自动化每天运行 从接口读 |
![]() | 8 Diphia 2024-04-17 11:13:51 +08:00 @huaxianyan 既然都写文件了,那不如直接写 unixtimestamp ,然后每次看差值到 3 * 24 * 60 * 60 了没有。这样会一直稍微延后一点,或者你设定一个最初的时间去和它的 timestamp 对比 |
9 ho121 2024-04-17 11:16:40 +08:00 via Android sleep 3*24*60*60 |
![]() | 10 zsj1029 2024-04-17 11:19:36 +08:00 @huaxianyan 简单逻辑,每天执行,计算执行次数每次+1 ,然后%3 取余 1 、获取本地文件执行次数 count 2 、count+=1 3 、如果 count%3=0 ,执行逻辑代码 4 、最后 count 的次数再次写入本地文件 |
11 xiaociwei 2024-04-17 11:20:17 +08:00 设置最早跑的日期为常量,然后后续算日期天数差能被 3 整除的 就跑 |
![]() | 12 xiaooloong 2024-04-17 11:22:20 +08:00 每天执行,每次把写入的整数 +1 ,轮到 3 的倍数执行真正需要的操作 |
13 F7TsdQL45E0jmoiG 2024-04-17 11:31:05 +08:00 在 10:00 AM, 每 3 天 、00 10 */3 * * |
![]() | 14 sparkssssssss 2024-04-17 11:31:09 +08:00 刚好之前也有这种需要,有个 shell 脚本 可以参考下 ``` start_interval=432000 end_interval=518400 start_date=$(date -d '2024-02-04 02:00' +%s) now=$(date +%s) cycle=$(( (now - start_date) / 432000 )) [ $cycle -lt 1 ] && cycle=1 cycle_start=$(( start_date + cycle * 432000 )) cycle_end=$( cycle_start + start_interval )) if [ $((now - cycle_start)) -gt 0 ] && [ $((now - cycle_start)) -lt 80000 ];then command fi ``` |
![]() | 15 c6h6benzene 2024-04-17 11:32:57 +08:00 via iPhone 跟固定锚点比时间差取余就好了?上面提到的 unix 时间戳正好。 |
![]() | 16 wweerrgtc 2024-04-17 11:35:03 +08:00 快捷指令中有获取两个日期中的差值的选项 用这个应该很好实现 |
![]() | 17 anoninz 2024-04-17 11:39:53 +08:00 每天执行一次,写一个判断(当天与某个写死的特定日子相隔天数是否能被三整除) |
![]() | 18 gdfsjunjun 2024-04-17 11:41:21 +08:00 记录时间戳,每天运行,看是否相差大于三天的秒数不就好了 |
![]() | 19 huaxianyan OP @c6h6benzene 感谢,这个方法成功了,锚了一个时间计算间隔时间,然后除以 3 以余数来判断,算是曲线实现了 |
![]() | 20 wclebb 2024-04-17 12:09:22 +08:00 好像可以放在日期(就是日历那个)上执行。 然后日历上用重复来实现你的目的。 |
![]() | 21 CivAx 2024-04-17 12:12:25 +08:00 正好我之前写过这个: ----- 格式化日期:格式化 2024 年 1 月 1 日(或任何你希望的起始日期) 从输入中获取日期:从 (格式化日期) 获取日期 获取日期之间的时常:获取 (当前日期) 到 (起始日期) 之间的时长,单位为 (天) 获取变量:获取 (日期之间的时常) 计算结果:(日期之间的时常) ÷ 3 为数字取整:将 (计算结果) 取整到个位 如果:如果 (取整后的数字) (是) (计算结果) # 等于判断是否 (计算结果) 有小数,如果能整除则为真 -- 则执行操作 否则 -- 结束条件 ---- 这个之前是写给某个需要隔 3 天服用的药品用的。这里用的判断是,判断 “执行日” 距离 “起始日(初次服药日)” 是否为 3 ,或能被 3 整除,如果为真,那么就代表隔了 3 天到了下一个服药日;如果不能整除 也就是 “计算结果” 与 “为数字取整” 不全等,那么代表间隔日不足 3 天。 这个方法不存在闰年 Bug 。 |
![]() | 22 buf1024 2024-04-17 12:18:37 +08:00 cron tab |
![]() | 23 pipilu 2024-04-17 12:19:20 +08:00 执行的时候逢三 return |
![]() | 24 YGHMXFAL 2024-04-17 12:21:57 +08:00 sleep "$((3*24*60*60))" (别打我) |
![]() | 26 googol2chen 2024-04-17 13:04:23 +08:00 每年执行一次呢? |
![]() | 27 sunamask 2024-04-17 13:07:36 +08:00 |
![]() | 28 allegory 2024-04-18 01:54:52 +08:00 via iPhone @huaxianyan 10 位时间戳除以 86400 不就可以得到天了嘛 |