Jmeter二次开发函数 - 将指定时间转换为时间戳

1、达到效果:在jmeter的函数助手增加一个“timeStamp”函数,调用“timeStamp”函数可以将用户传入的时间转换为时间戳。

2、eclipse项目创建步骤此处省略,可参考上一篇Jmeter二次开发函数之入门

3、直接新建一个class命名为“TimeStampFunction”并继承jmeter自带的AbstractFunction

4、TimeStampFunction.java代码(逻辑为:创建key="__timeStamp",声明传入时间参数的处理方法,最终返回时间戳结果)

package org.apache.jmeter.functions;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;

import org.apache.jmeter.engine.util.CompoundVariable;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.samplers.Sampler;

public class TimeStampFunction extends AbstractFunction {
    private static String key="__timeStamp";
    private static List<String> timeParams=new LinkedList<String>();
    static
    {
        timeParams.add("请输入需要转换的时间(必填。填入的时间格式需为yyyy-MM-dd或者yyyy-MM-dd HH:mm:ss)");
    }
    public String time="";

    @Override
    public List<String> getArgumentDesc() {
        return timeParams;
    }

    @Override
    public String execute(SampleResult arg0, Sampler arg1) throws InvalidVariableException {
        // TODO Auto-generated method stub
        String lastTime="";
        System.out.print("用户传入时间为:"+time);
        //当传入时间格式为yyyy-MM-dd则自动补充为yyyy-MM-dd HH:mm:ss
        String relTime=time.length()==19?time:time+" 00:00:00";
        try{
            Date guitime=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(relTime);
            lastTime=String.valueOf(guitime.getTime());
            System.out.print(relTime+"转换时间戳为:"+lastTime);
        }catch (ParseException e){
            e.printStackTrace();
            lastTime="输入日期格式错误,请重新填入";
        }
        System.out.print("最终转换时间戳为:"+lastTime);
        return lastTime;
    }

    @Override
    public String getReferenceKey() {
        return key;
    }

    @Override
    public void setParameters(Collection<CompoundVariable> arg0) throws InvalidVariableException {
        checkParameterCount(arg0,1);
        Object[] data=arg0.toArray();
        time=((CompoundVariable)data[0]).execute();
    }

}

5、将TimeStampFunction.java代码保存,导出到桌面并命名为TimeStampFunction.jar。将TimeStampFunction.jar复制到jmeter目录下\apache-jmeter-5.5\lib\ext\

6、重启jmeter,打开函数助手可以看到多了一个timeStamp函数,并且函数可以传入时间参数并获对应的时间戳

 

 

 Jmeter自带函数也可以将指定时间转化为时间戳,参考Jmeter函数助手30-groovy

 

posted @ 2023-05-30 16:24  dabeen  阅读(884)  评论(0编辑  收藏  举报