如何在 SoapUI 中获取减去天数的日期?

How to get in SoapUI the date minus days?

在认为这是重复之前,请阅读。

我一直在阅读这里和其他地方的帖子,但无法弄清楚为什么日期一开始就无效。

我正在使用 SoapUI Pro 进行调用并已放置在 XML 中,它提交了一些代码参考以创建过去的日期,但我需要它们相对于今天而不是将来的日期在未来或遥远的过去所以我使用了以下

${=import java.text.SimpleDateFormat;
new SimpleDateFormat("YYYY-MM-DD").format(new Date()-6);}

当我提交对 Web 服务的调用时,我返回了这个错误。

'2016-02-32' is not a valid value for 'date'

有人可以解释为什么会这样吗? 我需要纠正什么?

最终我需要能够做两件事。

  1. 创建一个格式为 YYYY-MM-DD 过去 6 天的日期
  2. 以 YYYY-MM-DD 格式创建日期时间 HH:mm:ss.SSSXXX

非常感谢您对此提供的帮助。 我不使用日期吗? 我已经看到一些正在使用日历和对 Java 8 的新引用,这只是今天早上时间紧迫的事情,我不想去任何兔子洞去追踪可能成为问题的事情,因为服务器目前未使用 Java 8。

尝试这样的事情

${=import java.text.SimpleDateFormat; Calendar cal = Calendar.getInstance(); cal.add(Calendar.DATE, -6); new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime());}

您也可以将其用于日期和时间,只需替换格式字符串即可。

格式化日期的正确模式是 yyyy-MM-dd(参见 SimpleDateFormat javadoc)

  • y - 表示当前年份
  • Y - 表示年中的周,可以不同于年中的第一周和最后一周 (explained difference)
  • d - 月中的第几天
  • D - 一年中的第几天

答案基于How to subtract X day from a Date object in Java?

再次感谢@MJar。 这些是我在通过 SoapUI Pro 提交并工作的 XML 中使用的格式!

注意: 代码全部在一行中,只是因为我是这样做的,以放入 XML 而不是多行。

2016-02-02

${=import java.text.SimpleDateFormat; Calendar cal = Calendar.getInstance(); new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime());}

2016-02-03T09:54:55.866-05:00

${=import java.text.SimpleDateFormat; Calendar cal = Calendar.getInstance(); new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX").format(cal.getTime());}

或者设为过去的一天(本例为 6 天前)

${=import java.text.SimpleDateFormat; Calendar cal = Calendar.getInstance(); cal.add(Calendar.DATE, -6); new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime());}

这对我适用于 SoapUI v5.3.0:

${=new java.text.SimpleDateFormat("yyyy-MM-dd").format(new Date() - 6)}

${=def now=new Date();now.format("yyyy-MM-dd")} 如果你需要它是昨天或未来的日期,就像 +x 到 Date() 例子 ${=def now=new Date()+10;now.format("yyyy-MM-dd")}