Groovy NIFI:使用ExecuteScript处理器在两个日期之间生成日期

Groovy NIFI:使用ExecuteScript处理器在两个日期之间生成日期,groovy,apache-nifi,Groovy,Apache Nifi,我目前正在尝试获取流文件中使用ExecuteScript指定的两个日期之间的所有日期列表。但我不知何故得到了空属性 以下是指定的startdate和enddate变量的我的Groovy ExecuteScript代码: flowFile = session.get(); if(!flowFile) return; DATE_FORMAT = 'dd-MM-yyyy'; startDate = Date.parse(DATE_FORMAT, flowFile.getAttribute("

我目前正在尝试获取流文件中使用ExecuteScript指定的两个日期之间的所有日期列表。但我不知何故得到了空属性

以下是指定的
startdate
enddate
变量的我的Groovy ExecuteScript代码:

flowFile = session.get();
if(!flowFile)
    return;

DATE_FORMAT = 'dd-MM-yyyy';
startDate = Date.parse(DATE_FORMAT, flowFile.getAttribute("startdate"));
endDate = Date.parse(DATE_FORMAT, flowFile.getAttribute("enddate"));
allDates = "";

Calendar calendar = Calendar.getInstance();
Set allDates = new LinkedHashSet();
numbers = TimeUnit.MILLISECONDS.toDays(Math.abs(endDate - startDate))


for (int i = 1; i <= numbers; i++) {
calendar.setTime( startDate );
calendar.add( Calendar.DATE, i );
}

days.each {
    day -> allDates = allDates + day + "\n";
}

flowFile = session.putAttribute(flowFile,"allDates", allDates );
session.transfer(flowFile,REL_SUCCESS)
flowFile=session.get();
如果(!flowFile)
返回;
日期格式='dd-MM-yyyy';
startDate=Date.parse(Date_格式,flowFile.getAttribute(“startDate”));
endDate=Date.parse(Date_格式,flowFile.getAttribute(“endDate”);
所有日期=”;
日历=Calendar.getInstance();
Set allDates=new LinkedHashSet();
数字=时间单位。毫秒。今天(Math.abs(endDate-startDate))
对于(int i=1;i allDates=allDates+day+“\n”;
}
flowFile=session.puttribute(flowFile,“allDates”,allDates);
session.transfer(流文件,REL_SUCCESS)
在传出队列中,我发现属性
allDates
为空字符串


我的代码出了什么问题?

您的代码中有一些问题

例如,变量
allDates
在两个不同的范围内声明了两次:

全局(无类型或定义)

和本地(带类型)

之后很难预测使用哪一种

实际上,在groovy中编写代码可能更容易:

def DATE_FORMAT = 'dd-MM-yyyy';
def startDate = Date.parse(DATE_FORMAT, '01-11-1970');
def endDate = Date.parse(DATE_FORMAT, '09-11-1970');
def allDates = ""

for (def d = startDate; d<=endDate; d++){
    allDates+=d.format(DATE_FORMAT)+"\n"
}
println allDates
def DATE_格式='dd-MM-yyyy';
def startDate=Date.parse(Date_格式,'01-11-1970');
def endDate=Date.parse(Date_格式,'09-11-1970');
def allDates=“”
对于(def d=起始日期;d
Set allDates = new LinkedHashSet();
def DATE_FORMAT = 'dd-MM-yyyy';
def startDate = Date.parse(DATE_FORMAT, '01-11-1970');
def endDate = Date.parse(DATE_FORMAT, '09-11-1970');
def allDates = ""

for (def d = startDate; d<=endDate; d++){
    allDates+=d.format(DATE_FORMAT)+"\n"
}
println allDates