评估复杂的时间模式

2023-11-29

我想定义和评估一些非常复杂的时间模式的出现,这些模式无法通过 CRON 表达式轻松处理。有没有图书馆可以帮助我做到这一点?

例如:

  1. 我希望它每 25 秒发生一次。
  2. 我只想发生在每月的第一天和最后一天。但每月的第一天应该让我在上午 9:00 到 11:00 之间花 5 分钟的时间来解决这个问题。该月的最后一天应评估为上午 5:00。
  3. 我想创建非常复杂的时间模式,执行如下操作:

    每月第一周和第三周的星期一上午 8:30 到上午 11:30 之间的时间 第二周和第四周的周二和周日中午 12:00

是否可以用某种表达形式来表达这样的要求,并评估它适合什么日期?我应该使用什么,在哪里可以找到它?


我是评估此类表达式的库的作者。它是领域特定语言,看起来有点像 SQL,因此很多用户应该熟悉它的语法。对于所询问的表达式:

我希望它每 25 秒发生一次。

repeat every 25 seconds start at '29.10.2017 01:55:00'

我只想发生在每月的第一天和最后一天。但每月的第一天应该让我在上午 9:00 到 11:00 之间花 5 分钟的时间来解决这个问题。该月的最后一天应评估为上午 5:00。

repeat every minutes where 1 = 
    (case 
        when GetDay() = 1 and GetHour() between 9 and 11
        then GetMinute() % 5 = 0
        when IsLastDayOfMonth()
        then GetHour() = 5 and GetMinute() = 0 and GetSecond() = 0 
        else 0
    esac) start at '01.01.2017'

每月第一周和第三周的星期一上午 8:30 到上午 11:30 之间获取时间 第二周和第四周的周二和周日中午 12:00 获取时间

repeat every minutes where 1 = 
   (case 
       when GetWeekOfMonth() in (1,3) and GetDayOfWeek() = monday
       then GetTime() between Time(8, 30, 0) and Time(11, 30, 0)
       when GetWeekOfMonth() in (2,4) and GetDayOfWeek() in (tuesday, sunday)
       then GetTime() = Time(12, 0, 0)
       else 0
    esac) start at '01.04.2017'

这里值得指出的是,通常可以以不同的方式计算月份中的一周,但没有标准的方法来执行此操作,因此结果可能会根据选择的策略而有所不同。GetWeekOfMonth(string type)有改变策略的可选类型参数。

可以注意到,包含的查询where部分允许在当前时间线上应用复杂的过滤器。您只需像在 SQL 中一样编写过滤器,但您将过滤时间线,而不是数据。

几乎没有内置函数可以帮助更快地设计新查询。还可以开发其他过滤器功能。查看默认可用于wiki。所有这些函数都是用纯 C# 编写的,添加自定义函数应该很容易。它可以在nuget。我希望这个库对社区有用。

我还制作了共享抽象的 cron 评估器,因此可以互换使用它,因为有时使用 cron 会更好。

https://github.com/Puchaczov/TQL.RDL

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

评估复杂的时间模式 的相关文章

随机推荐

  • 仅使用一个 dbContext 对多个数据库执行投影

    我们正在将 EF Core 用于当前项目 该项目有三个数据库 这是一个真正无法避免的麻烦 数据库具有相同的结构 因此我们能够交换上下文并使用相同的 EF 模型来执行 CRUD 操作 我们有一个特别复杂的查询 我们将从传统的 ADO NET
  • 如何在iPad中实现文字转语音功能?

    是否有任何 3rd 方 API 可以提供文本转语音功能 Yes The CMU Flite 节日精简版 语音合成库已移植到iOS并且似乎在 App Store 中的许多 iPhone 和 iPad 应用程序中使用
  • 如何从 T 中减去 1,其中 T: num 特征::Num?

    我正在尝试创建一个适用于所有数字整数类型的特征 我认为限制它num traits Num将强制它仅适用于 u8 u16 等 因此 1 始终有效 pub fn divide round up
  • 在生产环境中,Socket.io websocket 在 Nuxt 3 中无法工作

    我正在 Nuxt 3 应用程序中创建一个 socket io 实现 当我处于开发模式时 Websocket 可以工作 但出现此错误错误信息 我使用的是 Nuxt 版本 nuxt v3 0 0 rc 8 这是我的 nuxt config ts
  • 将数据从一个表插入到另一个表

    我有两个不同的表 但列的命名略有不同 我想从一张表中获取信息并将其放入另一张表中 仅当表 1 中的 信息字段 不为空时 我才需要将表 1 中的信息放入表 2 中 每当创建某些内容时 表 2 都有一个唯一的 ID 因此插入的任何内容都需要获取
  • 使用单连接实例实现 Eclipse MQTT Android 客户端

    我在我的应用程序中使用 Eclipse Paho android mqtt 服务 我能够订阅消息并将消息发布到 mqtt 代理 我的应用程序中有几个活动 当任何活动启动时 它都会使用以下方式连接到代理mqttAndroidClient co
  • PowerShell:.NET 程序集的导入模块或添加类型?

    我使用的是 PowerShell 5 1 Windows 10 x64 我应该使用这 2 个 cmdlet 中的哪一个将 NET 程序集 特别是 NET Framework 4 程序集 加载到 PowerShell 中 他们之间的核心区别是
  • 如何使用 VBScript 或批处理文件下载 JSON 文件并获取值?

    这是回答的 VBScript 代码here从计算机获取具有正确值的 JSON 文件 Set fso CreateObject Scripting FileSystemObject json fso OpenTextFile C path t
  • 温莎城堡:- 通过配置注入接口字典

    您好 我正在尝试注入接口字典 但从城堡中收到如下错误 Castle MicroKernel SubSystems Conversion ConverterException 没有注册转换器来处理 IFoo 类型 为了解决该异常 我必须创建一
  • 如何获得 url 更改的提示

    我是 gwt 的新人 我希望当用户按下后退按钮时 他会收到一个警报 表明我们将刷新页面 大多数情况下 我们会在松散焦点打字时看到 如果用户按下后退按钮 他的页面就会刷新 并且所有值都会被清洗 我们怎样才能做到这一点 Try 窗口 Closi
  • Spring Cloud Config:客户端不会尝试连接到配置服务器

    我正在尝试创建一个简单的 Spring Cloud Config 服务器 客户端设置 并且大致遵循文档 https cloud spring io spring cloud config reference html 到目前为止 我已经实现
  • HTML 5 中的视频捕获

    如何从视频设备捕获视频并使该视频在 HTML5 画布中可用 也许你应该使用HTML5视频捕捉功能 这种方式不需要安装任何插件 而是告诉用户升级他们的浏览器
  • Summernote - 从服务器删除图像

    您好 我已使用以下链接中的代码来允许将图像上传到服务器 Summernote 图片上传 如果用户从编辑器中删除图像 是否可以实现类似的操作以从服务器中删除图像 如果是这样 我该如何实现这一目标 要从服务器删除文件 您需要使用onMediaD
  • jTable 根据数据所有者条件显示\隐藏编辑和删除按钮

    我使用 jTable 来显示 CD 信息 并使用子表来显示该 CD 的评论 我希望能够仅在登录用户的行上显示编辑 删除按钮 我一直在尝试遵循以下建议 https github com hikalkan jtable issues 113 h
  • Method Of类型不能用来调用该方法

    我想动态生成一些测试 因为我必须调用一个带有要调用的方法名称的方法 然后完成所有测试设置并调用该方法 所以基本上我打电话createTest methodName 代替it methodName gt lotsOfBoringStuff 为
  • RestKit 0.20.1 如何映射父id

    给定这个 XML 负载
  • 反序列化递归 JSON 对象 [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我有一个像这样的递归 JSON 对象 表示查询表达式 where operator AND left operator fieldRef requestor value me r
  • 亚马逊在 R 中评论网络抓取:当其中一条评论来自另一个国家时,如何避免遇到错误?

    为了获得一些有趣的 NLP 数据 我刚刚开始在 R 中进行一些基本的网络抓取 我的目标是尽可能多地从亚马逊收集产品评论 我的第一次基本试验成功了 但现在遇到了错误 您可以从我的 reprex 中的网址查看 该产品有 3 页评论 如果我刮掉第
  • 切片 numpy 数组时出现意外的形状

    我有一个 4D numpy 数组 在单个维度中对多个索引进行切片时 我的轴会互换 我在这里错过了一些微不足道的事情吗 import numpy as np from smartprint import smartprint as print
  • 评估复杂的时间模式

    我想定义和评估一些非常复杂的时间模式的出现 这些模式无法通过 CRON 表达式轻松处理 有没有图书馆可以帮助我做到这一点 例如 我希望它每 25 秒发生一次 我只想发生在每月的第一天和最后一天 但每月的第一天应该让我在上午 9 00 到 1