我需要知道今天是否是工作日。
在 CPython 中,我会使用日期时间:
import datetime
today=datetime.date.today()
if today.isoweekday()==0 or today.isoweekday()==6
print "weekend"
else:
print "weekday"
但是,由于我使用 NiFi,所以我被迫使用 Jython。它显然将 datetime 实现为某些 JDBC 类的别名。 如果我在 NiFi 中尝试上面的代码,我会收到以下错误:
AttributeError: 'java.sql.Date' object has no attribute 'isoweekday' in at line number 8.
在这种情况下我怎样才能找到星期几?
最佳答案
您必须在 Jython 中执行此确定吗? Apache NiFi 公开了一种自定义表达式语言,它允许您在流文件属性或内容中执行某些操作,而无需加载全新的评估环境。通过使用 EL date functions与 Java time formatting syntax (specifically E
-- day of week) ,您可以制作一个 bool 表达式,该表达式将适本地返回 weekday
或 weekend
。
此示例使用 now()
返回当前时间,但您也可以拥有现有的属性值,例如 12/10/2018
或类似的字符串根据 EL 文档,使用 toDate()
进行解析。
${now():format("E"):in("周六", "周日"):ifElse("周末", "工作日")}
这已在 Apache NiFi 1.9.0-SNAPSHOT 上进行了测试,但应该适用于 1.2.0 之后引入 ifElse
的任何版本。
关于python - Jython 中的日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53709405/