使用Groovy脚本从当前日期获取日历日的最后30天

2020-08-21 22:26发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


def字符串customFunc(String arg1){/* DateFormat dateFormat = new SimpleDateFormat(" dd-MM-yyyy"); */SimpleDateFormat dateFormat = new SimpleDateFormat(" dd-MM-yyyy"); 日历cal = Calendar.getInstance(); 日期date = cal.getTime(); String []天=新的String [30]; days [0] = dateFormat.format(date); cal.add(Calendar.DATE,-30); for(int i = 0; i <30; i ++){date = cal.getTime(); days [i] = dateFormat.format(date); /*cal.add(Calendar.DAY_OF_YEAR,1); */days [i] = dateFormat.format(cal.getTime()); def y_date = days [i] .toString(); 如果(arg1 == y_date)返回" true",否则返回" false"}}

输出不正确。需要紧急帮助。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


def字符串customFunc(String arg1){/* DateFormat dateFormat = new SimpleDateFormat(" dd-MM-yyyy"); */SimpleDateFormat dateFormat = new SimpleDateFormat(" dd-MM-yyyy"); 日历cal = Calendar.getInstance(); 日期date = cal.getTime(); String []天=新的String [30]; days [0] = dateFormat.format(date); cal.add(Calendar.DATE,-30); for(int i = 0; i <30; i ++){date = cal.getTime(); days [i] = dateFormat.format(date); /*cal.add(Calendar.DAY_OF_YEAR,1); */days [i] = dateFormat.format(cal.getTime()); def y_date = days [i] .toString(); 如果(arg1 == y_date)返回" true",否则返回" false"}}

输出不正确。需要紧急帮助。

付费偷看设置
发送
5条回答
lukcy2020
1楼 · 2020-08-21 22:48.采纳回答

嗨Arjya

您不需要创建包含所有日期的数组; 您可以(也应该)进行日期比较。

尝试使用此功能:

导入java.text.SimpleDateFormat

 def字符串customFunc(String arg1){
     def targetDate = new SimpleDateFormat('dd-MM-yyyy')。parse(arg1)
     今天的def =新的Date()
     今天。clearTime()
     返回targetDate.after(today.minus(31))&& targetDate.before(today.plus(1))吗?  '真假'
 } 

在某些示例日期它的工作方式如下:

关于此,

Morten

N-Moskvin
2楼-- · 2020-08-21 22:58

再次,如果您使用我的答案,请不要接受您自己的答案。 通过接受并支持有用的答案,您将对社区成员为帮助您 you 所付出的时间表示赞赏。

问候

Morten

浮生未央
3楼-- · 2020-08-21 22:57

由于您的示例代码不是真正可读的,并且您没有提供进一步的信息,因此我只能猜测您要实现的目标。 根据我的猜测,我将按以下方式解决它:

 def calDays = []
 今天的def =新的Date()
 对于(int i = 0; i <30; i ++){
   calDays.push(today.minus(i).format('dd-MM-yyyy'))
 }
//使用calDays数组进行任何操作
d56caomao
4楼-- · 2020-08-21 22:38

嗨Raffael

感谢您的快速回复。我一定会格式化它并向您解释。

下面是我的代码:

我需要获取从当前日期到过去30天的所有日历天,以下代码并没有给我提供全部30天的日期,它仅提供2020年2月19日,但没有提供2020年3月19日至2020年2月19日之间的所有日期 。我有一个传入文件,其中包含3月19日和2月18日这些日期中的日期,如果这30天窗口中有日期,则应为true,否则 false。因此我可以基于30天的日历值过滤数据。

希望这可以使您更清楚。让我知道是否需要更多说明。希望能收到您的来信。

____________________________________________________________________________

def字符串customFunc(String arg1){

SimpleDateFormat dateFormat = new SimpleDateFormat(" dd-MM-yyyy");

日历cal = Calendar.getInstance();

日期= cal.getTime();

String []天=新的String [30];

days [0] = dateFormat.format(date);

cal.add(Calendar.DATE,-30);

for(int i = 0; i <30; i ++){

date = cal.getTime(); days [i] = dateFormat.format(date);

days [i] = dateFormat.format(cal.getTime());

def y_date = days [i] .toString();

如果(arg1 == y_date)

返回"真"

否则返回" false"

}

}

感谢Morten分享以上比较。代码有效

一周热门 更多>