Дата и время в Jython - PullRequest
0 голосов
/ 10 декабря 2018

Мне нужно узнать, сегодня рабочий день.

В CPython для этого я бы использовал datetime:

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' нет атрибута 'isoweekday' в строке номер 8.

Как я могу узнать день недели в этом состоянии?

1 Ответ

0 голосов
/ 10 декабря 2018

Вам нужно выполнить это определение в Jython?Apache NiFi предоставляет пользовательский язык выражений, который позволяет выполнять некоторые операции с атрибутами потокового файла или контентом, не загружая совершенно новую среду оценки.Используя функции даты с синтаксисом форматирования времени Java (в частности, E - день недели ) , вы можете создать логическое выражение, которое будетверните weekday или weekend соответственно.

В этом примере используется now(), который возвращает текущее время, но вы также можете иметь существующее значение атрибута, например 12/10/2018, или аналогичную строку, которую можно проанализировать с помощью toDate() в соответствии с документами EL.

${now():format("E"):in("Sat", "Sun"):ifElse("weekend", "weekday")}

Это проверено на Apache NiFi 1.9.0-SNAPSHOT, но должно работать на любой версии после 1.2.0, когда была введена ifElse.

...