我是Groovy脚本的新手,我正在soapUI中寻找一个groovy脚本,我可以将其当前时间(IST)转换为UTC,然后再将其传递给API。
我尝试了以下代码:
import java.util.*;
def d = new Date()
def CurrentDay = ('0' + d.getUTCDate()).slice(-2)
def CurrentMonth = ('0' + d.getUTCMonth()).slice(-2)
def CurrentYear = d.getUTCFullYear()
def CurrentHours = ('0' + d.getUTCHours()).slice(-2)
def CurrentMinutes = ('0' + d.getUTCMinutes()).slice(-2)
def CurrentSeconds = ('0' + d.getUTCSeconds()).slice(-2)
def DateFormatted = CurrentYear.toString() + CurrentMonth.toString() + CurrentDay.toString() + CurrentHours.toString() + CurrentMinutes.toString() + CurrentSeconds.toString()
return DateFormatted;
但它并没有帮助我。期待着帮助。
编辑:OP在答案中评论说他希望将来有时间说10分钟。
答案 0 :(得分:3)
您可以通过简单的方式将本地日期转换为不同的时区:
println new Date().format("yyyy-MM-dd HH:mm:ss", TimeZone.getTimeZone('UTC'))
当然,您可以根据需要更改所需的日期格式,因为您还没有提及。
如果您需要在Soap请求中发送相同的日期,则无需另外Groovy Script
个测试步骤来创建日期。相反,您可以在请求中使用内嵌代码,如下所示:
说,请求中有date
个元素
<date>${= new Date().format("yyyy-MM-dd HH:mm:ss", TimeZone.getTimeZone('UTC'))}</date>
编辑:根据操作意见;需要得到延迟的时间(从现在起10分钟后)
<date>${= def date=new Date(); use(groovy.time.TimeCategory){date = date.plus(10.minutes)}; date.format("yyyy-MM-dd HH:mm:ss", TimeZone.getTimeZone('UTC'))}</date>
以上应该有效。但是,SoapUI似乎有解析上述问题。 解决方法是在请求步骤之前使用groovy脚本测试步骤,如下所示:
def date=new Date()
use(groovy.time.TimeCategory){ date = date.plus(10.minutes) }
def dateString = date.format("yyyy-MM-dd HH:mm:ss", TimeZone.getTimeZone('UTC'))
context.testCase.setPropertyValue('FUTURE_TIME', dateString)
在请求正文中,使用<date>${#TestCase#FUTURE_TIME}</date>
答案 1 :(得分:1)
使用SimpleDateFormatter
,您可以设置TimeZone
:
import java.text.SimpleDateFormat;
def d = new Date()
def sdf = new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss")
sdf.setTimeZone(TimeZone.getTimeZone("IST"))
println("IST ${sdf.format(d)}")
sdf.setTimeZone(TimeZone.getTimeZone("UTC"))
println("UTC ${sdf.format(d)}")