使用Groovy捕获上个月的最后一天

l0oc07j2  于 7个月前  发布在  其他
关注(0)|答案(2)|浏览(94)

我在Boomi中使用Groovy(1.5)来捕捉上个月的最后一天,我一直在混合我通过Google找到的一些东西:

import java.util.Properties;
import java.io.InputStream;

for( int i = 0; i < dataContext.getDataCount(); i++ ) {
    InputStream is = dataContext.getStream(i);
    Properties props = dataContext.getProperties(i);

    dataContext.storeStream(is, props);
}

var dt = new Date(); 
dt.setDate(1);  
dt.setHours(-1); 

props.setProperty("document.dynamic.userdefined.StartDate",dt);

但我遇到了以下错误:

No signature of method: com.sun.script.groovy.GroovyScriptEngine.var() is applicable for argument types: (java.util.Date) values: {Thu Feb 25 16:09:33 UTC 2021} (in groovy script);
 Caused by: No signature of method: com.sun.script.groovy.GroovyScriptEngine.var() is applicable for argument types: (java.util.Date) values: {Thu Feb 25 16:09:33 UTC 2021}
yrdbyhpb

yrdbyhpb1#

var是一个JavaScript保留关键字。有两种方法可以解决这个错误:
1.使用JavaScript作为语言:

1.将var替换为def

def dt = new Date();
dt.setDate(1);
dt.setHours(-1);
pod7payv

pod7payv2#

下面的示例显示如何获取上个月的最后一天并将格式设置为:

  • 日期
  • 月日期
  • 每日短名
  • 当天的全名

.
主要的技巧是从当前日期中减去Calendar.DAY_OF_MONTH,它将始终提供上个月的最后一天。
.

import java.text.SimpleDateFormat;
def date = new Date();

date = date.minus(date.getAt(Calendar.DAY_OF_MONTH));

def ddmmyyyyDateFormat = new SimpleDateFormat("dd-MM-yyyy")
def dayShortNameDateFormat = new SimpleDateFormat("E");
def dayFullNameDateFormat = new SimpleDateFormat("EEEE");

println "Date of last day of previous month: " + ddmmyyyyDateFormat.format(date);
println "Last day of previous month: " + date.getAt(Calendar.DAY_OF_MONTH);
println "Short name of day: " + dayShortNameDateFormat.format(date);
println "Full name of day: " + dayFullNameDateFormat.format(date);

相关问题