使用SoapUI中的groovy脚本将当前时间(IST)转换为UTC

时间:2017-11-02 10:42:42

标签: groovy soapui

我是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分钟。

2 个答案:

答案 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)}")