V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
huaxianyan
V2EX  ›  iPhone

请教一下,自动化如何才能实现每三天执行一次呢?

  •  
  •   huaxianyan · 254 天前 · 8190 次点击
    这是一个创建于 254 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在的自动化里重复只有每天每周和每月,但是明明其他地方的重复是可以支持每隔 3 天这种方法的

    有没有办法曲线实现每隔三天执行一次自动化呢?

    第 1 条附言  ·  254 天前
    我建议点进帖子的各位先看看这是哪个分区,我以为选择了分区就不需要详细说明了

    我详细阐述一下我的问题,是想问 iOS 上快捷指令里的自动化如何每三天执行一次
    第 2 条附言  ·  254 天前
    另外问题已经解决,感谢楼里给出方法以及思路的朋友,非常感谢

    如果有同样需求的可以自己爬下楼
    28 条回复    2024-04-18 01:54:52 +08:00
    yzding
        1
    yzding  
       254 天前 via iPhone
    每天执行一次,然后判断当前日期是否是 3 的倍数?
    facebook47
        2
    facebook47  
       254 天前 via Android
    每 72 小时🐶
    huaxianyan
        3
    huaxianyan  
    OP
       254 天前
    @yzding 是只判断日吗,那这样月初月尾衔接的时候应该会有意外
    @facebook47 这个要如何设置呢?自动化的特定时间里重复没有每 72 小时选项
    zsj1029
        4
    zsj1029  
       254 天前
    crontab 了可以设置*/3 每三小时,同理可以设置三天
    一楼也说了思路,每天的话,程序判断三天。
    既然执行任务,可以看看有没有持久化记录上次执行时间,然后看看是否满足三天间隔
    icestraw
        5
    icestraw  
       254 天前
    你自己用 每天执行一次,然后时间戳把毫秒转换成天,然后再 mod3
    huaxianyan
        6
    huaxianyan  
    OP
       254 天前
    @zsj1029 这个思路有尝试过,但是对比日期这块卡住了,想每次执行的时候把时间写到本机的一个文本内,然后下次执行的时候读取进行对比,不过读和写试了很多项都不对
    dingdangnao
        7
    dingdangnao  
       254 天前
    写个接口 自己做逻辑判断 每三天返回 1 其他时间返回 0
    自动化每天运行 从接口读 😂
    Diphia
        8
    Diphia  
       254 天前
    @huaxianyan 既然都写文件了,那不如直接写 unixtimestamp ,然后每次看差值到 3 * 24 * 60 * 60 了没有。这样会一直稍微延后一点,或者你设定一个最初的时间去和它的 timestamp 对比
    ho121
        9
    ho121  
       254 天前 via Android
    sleep 3*24*60*60
    zsj1029
        10
    zsj1029  
       254 天前
    @huaxianyan 简单逻辑,每天执行,计算执行次数每次+1 ,然后%3 取余
    1 、获取本地文件执行次数 count
    2 、count+=1
    3 、如果 count%3=0 ,执行逻辑代码
    4 、最后 count 的次数再次写入本地文件
    xiaociwei
        11
    xiaociwei  
       254 天前
    设置最早跑的日期为常量,然后后续算日期天数差能被 3 整除的 就跑
    xiaooloong
        12
    xiaooloong  
       254 天前
    每天执行,每次把写入的整数 +1 ,轮到 3 的倍数执行真正需要的操作
    F7TsdQL45E0jmoiG
        13
    F7TsdQL45E0jmoiG  
       254 天前
    在 10:00 AM, 每 3 天 、00 10 */3 * *
    coolloves
        14
    coolloves  
       254 天前
    刚好之前也有这种需要,有个 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
    ```
    c6h6benzene
        15
    c6h6benzene  
       254 天前 via iPhone
    跟固定锚点比时间差取余就好了?上面提到的 unix 时间戳正好。
    wweerrgtc
        16
    wweerrgtc  
       254 天前
    快捷指令中有获取两个日期中的差值的选项

    用这个应该很好实现
    anoninz
        17
    anoninz  
       254 天前
    每天执行一次,写一个判断(当天与某个写死的特定日子相隔天数是否能被三整除)
    gdfsjunjun
        18
    gdfsjunjun  
       254 天前
    记录时间戳,每天运行,看是否相差大于三天的秒数不就好了
    huaxianyan
        19
    huaxianyan  
    OP
       254 天前
    @c6h6benzene
    感谢,这个方法成功了,锚了一个时间计算间隔时间,然后除以 3 以余数来判断,算是曲线实现了
    wclebb
        20
    wclebb  
       254 天前
    好像可以放在日期(就是日历那个)上执行。
    然后日历上用重复来实现你的目的。
    CivAx
        21
    CivAx  
       254 天前
    正好我之前写过这个:
    -----
    格式化日期:格式化 2024 年 1 月 1 日(或任何你希望的起始日期)
    从输入中获取日期:从 (格式化日期) 获取日期
    获取日期之间的时常:获取 (当前日期) 到 (起始日期) 之间的时长,单位为 (天)
    获取变量:获取 (日期之间的时常)
    计算结果:(日期之间的时常) ÷ 3
    为数字取整:将 (计算结果) 取整到个位
    如果:如果 (取整后的数字) (是) (计算结果) # 等于判断是否 (计算结果) 有小数,如果能整除则为真
    -- 则执行操作
    否则
    -- 结束条件
    ----
    这个之前是写给某个需要隔 3 天服用的药品用的。这里用的判断是,判断 “执行日” 距离 “起始日(初次服药日)” 是否为 3 ,或能被 3 整除,如果为真,那么就代表隔了 3 天到了下一个服药日;如果不能整除 —— 也就是 “计算结果” 与 “为数字取整” 不全等,那么代表间隔日不足 3 天。

    这个方法不存在闰年 Bug 。
    buf1024
        22
    buf1024  
       254 天前
    cron tab
    pipilu
        23
    pipilu  
       254 天前
    执行的时候逢三 return
    YGHMXFAL
        24
    YGHMXFAL  
       254 天前
    sleep "$((3*24*60*60))"

    (别打我)
    YGHMXFAL
        25
    YGHMXFAL  
       254 天前
    @YGHMXFAL 把它包在 while true 内部
    googol2chen
        26
    googol2chen  
       254 天前
    每年执行一次呢?
    allegory
        28
    allegory  
       254 天前 via iPhone
    @huaxianyan 10 位时间戳除以 86400 不就可以得到天了嘛
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   913 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 21:50 · PVG 05:50 · LAX 13:50 · JFK 16:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.