我有一个调度程序,它将启动任务T,并且T的一些参数非常依赖于日期。例如,如果T在星期二运行,则一些参数为:
param1 = datetime('Monday at 1pm')
param2 = datetime('Tuesday at 1am')
根据T的运行时间,参数可能会有所不同。因此,例如,如果它在周日运行,参数可能是:
param1 = datetime('Saturday at 12pm')
param2 = datetime('Sunday at 12pm')
等等。我们的想法是,日期是相对于T运行的时间,但我不能使用timedelta
,因为我不知道任务何时运行,所以我想对日期保持一定程度的绝对控制。
现在,将启动T的代码有一个指定参数的小json包。我正在编写一种微小的脚本语言,它可以让我指定相对日期。它看起来像是:
date1: {
'type': 'datetime',
'source': 'composite',
'value': '(Yn)-(Mn)-(Dn)-(Hn)-(Nn)'
}
value
字符串将被解析,并根据括号中的内容编译参数。因此,例如,如果value
类似于(Y:n)-(M:n)-(D:-1)-(H:18)-(N:00)
,它将用当前年份、当前月份、前一个日期18:00来构造日期。
我是不是想用这些东西重新发明轮子。有没有图书馆能让我的生活更轻松?
编辑:看起来Date Utils的相对德尔塔正是我上面描述的!
对于人类可读的日期/时间解析,您可以使用parsedatetime
我会按原样存储"人类可读"字符串,并在需要时对其进行评估。