Jmeter +Java Calendar 类的时间操作

引言 

想用jmeter获取最近几个月或最近一段时间时间,而Java Calendar 类时间操作,这也许是创建和管理日历最简单的一个方案,示范代码很简单。由此百度到了Java Calendar 类的时间操作的一些文章。 

相关原文地址如下: 

http://blog.csdn.net/joyous/article/details/9630893 

http://chamcon.iteye.com/blog/2144433 
 

调试 

在此结合jmeter进行调试: 

如想获取“9个月后和4个月前的时间”或“获取50分钟后和50分钟前的时间”,则具体代码如下: 

import java.util.Date;   
import java.text.SimpleDateFormat;   
import java.text.DateFormat;   
import java.text.ParseException;   
import java.util.Calendar;  
 
 
//显示当前时间 
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
Date now = new Date(); 
System.out.println("当前时间:" + sdf.format(now)); 
log.info("当前时间为:"+sdf.format(now)); 
 
 
//获取9个月后和4个月前的时间 
Calendar nowTime = Calendar.getInstance(); 
nowTime.add(Calendar.MONTH, 9);//9个月后的时间 
log.info("9个月后的时间为:"+sdf.format(nowTime.getTime())); 
Calendar nowTime2 = Calendar.getInstance(); 
nowTime2.add(Calendar.MONTH, -4);//4个月前的时间 
log.info("4个月前的时间为:"+sdf.format(nowTime2.getTime())); 
 
 
//获取30分钟后和30分钟前的时间 
Calendar nowTime = Calendar.getInstance(); 
nowTime.add(Calendar.MINUTE, 30);//30分钟后的时间 
log.info("30分钟后的时间为:"+sdf.format(nowTime.getTime())); 
Calendar nowTime2 = Calendar.getInstance(); 
nowTime2.add(Calendar.MINUTE, -30);//30分钟前的时间 
log.info("30分钟前的时间为:"+sdf.format(nowTime2.getTime())); 
 

 
 

运行结果如下: 

BeanShell Sampler 
ET. : BeanShell Sampler 
Reset bsh.lnterpreterbefore each call 
(-> String Parameters *a String []bash.args) 
Script (see below for variables that are defined) 
L E] import java. util. Date 
import java . text. SimpleDateFomat; 
import java . text. DateFormat; 
import java . text. ParseException; 
import java. util.CaIendar; 
SimpleDateFormat 
sdf = new 
13 
14 
18 
26 
new Date(); 
ate now = 
ystem.out. println ( " 
+ sdf.fomat(now)); 
log. "+sdf.format(now)); 
alendar nowTime = 
Calendar .getlnstance 
o; 
nowTime. add (Calendar . g) 
log. "+sdf.fomat(nowTime.getTime 
Calendar nowTime2 
= Calendar .getlnstance 
o; 
nowTime2. add (CSIéndaF.+üITHs . -4) 
log. 
alendar nowTime = 
Calendar .getlnstance 
o; 
nowTime. add (Calendar . MINUTE, 3B) 
log. 
Calendar nowTime2 
= Calendar .getlnstance 
o; 
nowTime2. add (Calendar . MINUTE, -3B) 
log. "+sdf 
The following variables are defined for the script 
SampleResult, ResponseCode, ResponseMessage, IsSuccess, Label, FileName, ctK, vars, props, log 
2017/04/13 
2017/04/13 
2017/04/13 
2017/04/13 
2017/04/13 
2017/04/13 
2017/04/13 
2017/04/13 
2017/04/13 
2017/04/13 
2017/04/13 
2017/04/13 
2017/04/13 
2017/04/13 
INFO 
INFO 
INFO 
INFO 
INFO 
INFO 
INFO 
INFO 
INFO 
INFO 
INFO 
INFO 
INFO 
INFO 
- jmeter. engine. Standard]MeterEngine: Starting ThreadGroup: I 
- jmeter. engine. Standard]MeterEngine: Starting I threads for group 
- jmeter. engine. Standard]MeterEngine: Thread will continue on error 
- jmeter.threads. ThreadGroup: Starting thread group number I threads I ramp-up I per Thread I øøø.ø delayedStart 
- jmeter.threads. ThreadGroup: Started thread group number I 
- jmeter. engine. Standard]MeterEngine: All thread groups haue been started 
- jmeter.threads. JMeterThread: Thre 
- jmeter. 
util. aeanshe11TestE1anent: 2017-04-13 
util. aeanshe11TestE1anent: 34 E 2018-01-13 
- jmeter. 
util. aeanshe11TestE1anent: 34 2016-12-13 
- jmeter. 
- jmeter. 
util. aeanshe11TestE1anent: 2017-04-13 
- jmeter. 
util. aeanshe11TestE1anent: 2017-04-13 
- jmeter.threads. JMeterThread: Thread is done: 
- jmeter.threads. JMeterThread: Thread finished: 1-1

 
 

 
 

 
 

扩展 

对于Java Calendar 类的时间操作的其他用法也进行了尝试,具体代码如下: 

 
 

import java.util.Date;   
import java.text.SimpleDateFormat;   
import java.text.DateFormat;   
import java.text.ParseException;   
import java.util.Calendar;  

 
//显示当前时间 
String str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(new Date()); 
log.info("当前时间为:"+str); 

 
// 创建 Calendar 对象   
Calendar calendar = Calendar.getInstance();  

 
// 显示年份   
int year = calendar.get(Calendar.YEAR);   
log.info("year is = " + String.valueOf(year));   
   
// 显示月份 (从0开始, 实际显示要加一)  
/* 
* 在获取月份时,Calendar.MONTH + 1 的原因: 
* Java中的月份遵循了罗马历中的规则:当时一年中的月份数量是不固定的,第一个月是JANUARY。 
* 而Java中Calendar.MONTH返回的数值其实是当前月距离第一个月有多少个月份的数值,JANUARY在Java中返回“0”,所以我们需要+1。 
*/   
int month = calendar.get(Calendar.MONTH);   
log.info("month is = " + (month+1));   
   
// 本周几 (实际显示要-1)  
/* 
* 在获取星期几 Calendar.DAY_OF_WEEK – 1 的原因: 
* Java中Calendar.DAY_OF_WEEK其实表示:一周中的第几天,所以他会受到 第一天是星期几 的影响。 
* 有些地区以星期日作为一周的第一天,而有些地区以星期一作为一周的第一天,这2种情况是需要区分的。 
看下表的返回值 
*/ 
//一周第一天是否为星期天   
boolean isFirstSunday = (calendar.getFirstDayOfWeek() == Calendar.SUNDAY);   
//获取周几   
int weekDay = calendar.get(Calendar.DAY_OF_WEEK);  
//若一周第一天为星期天,则-1   
if(isFirstSunday){   
    weekDay = weekDay - 1;   
    if(weekDay == 0){   
        weekDay = 7;   
    }   
 
log.info("weekDay is = " + (weekDay));   
   
// 今年的第 N 天   
int DAY_OF_YEAR = calendar.get(Calendar.DAY_OF_YEAR);   
log.info("DAY_OF_YEAR is = " + DAY_OF_YEAR);   
   
// 本月第 N 天   
int DAY_OF_MONTH = calendar.get(Calendar.DAY_OF_MONTH);   
log.info("DAY_OF_MONTH = " + String.valueOf(DAY_OF_MONTH));   
   
// 3小时以后   
calendar.add(Calendar.HOUR_OF_DAY, 3);   
int HOUR_OF_DAY = calendar.get(Calendar.HOUR_OF_DAY);   
log.info("HOUR_OF_DAY + 3 = " + HOUR_OF_DAY);   
   
// 当前分钟数   
int MINUTE = calendar.get(Calendar.MINUTE);   
log.info("MINUTE = " + MINUTE); 
   
// 15 分钟以后   
calendar.add(Calendar.MINUTE, 15);  
MINUTE = calendar.get(Calendar.MINUTE);  
log.info("MINUTE + 15 = " + MINUTE);   
 
 
// 30分钟前   
calendar.add(Calendar.MINUTE, -30);   
MINUTE = calendar.get(Calendar.MINUTE);   
log.info("MINUTE - 30 = " + MINUTE);   
   
// 格式化显示   
str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS")).format(calendar.getTime());   
log.info(str);   
   
// 重置 Calendar 显示当前时间   
calendar.setTime(new Date());   
str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS")).format(calendar.getTime());   
log.info(str);   
   
// 创建一个 Calendar 用于比较时间   
Calendar calendarNew = Calendar.getInstance();   
   
// 设定为 5 小时以前,后者大,显示 -1   
calendarNew.add(Calendar.HOUR, -5);   
log.info("时间比较:" + calendarNew.compareTo(calendar));   
   
// 设定7小时以后,前者大,显示 1   
calendarNew.add(Calendar.HOUR, +7);   
log.info("时间比较:" + calendarNew.compareTo(calendar));   
   
// 退回 2 小时,时间相同,显示 0   
calendarNew.add(Calendar.HOUR, -2);   
log.info("时间比较:" + calendarNew.compareTo(calendar)); 
 

运行结果如下: 

ĘeanShell Sampl 
BeanShell Sampler 
et; : BeanShell Sampler 
Reset bsh.lnterpreterbefore each call 
(s String Parameters*a String []bash.args) 
Script (see below for variables that are defined) 
calendar. add 
(calendar .MINUTE, - 
= calendar. get 
(calendar .MINUTE) ; 
MINUTE 
log. - 
+ MINUTE); 
= (new 
str 
log. info(str) ; 
,' calendar 
calendar. setTime(new Date()); 
= (new 
str 
log. info(str) ; 
calendar 
81 
Calendar 
calendarNew = Calendar .getlnstance 
o; 
- jmeter. engine. Standard)MeterEngine: AII thread groups have been started 
- jmeter.threads. IMeterThread: T hre 
2017/04/13 
2017/04/13 
40 2017/04/13 
2017/04/13 
42 2017/04/13 
43 2017/04/13 
44 2017/04/13 
40 2017/04/13 
46 2017/04/13 
2017/04/13 
42 2017/04/13 
49 2017/04/13 
2017/04/13 
2017/04/13 
2017/04/13 
2017/04/13 
2017/04/13 
2017/04/13 
INFO 
INFO 
INFO 
INFO 
INFO 
INFO 
INFO 
INFO 
INFO 
INFO 
INFO 
INFO 
INFO 
INFO 
INFO 
INFO 
INFO 
INFO 
- jmeter. util. 
- jmeter. util. 
- jmeter. util. 
- jmeter. util. 
- jmeter. util. 
- jmeter. util. 
- jmeter. util. 
- jmeter. util. 
- jmeter. util. 
- jmeter. util. 
- jmeter. util. 
- jmeter. util. 
- jmeter. util. 
- jmeter. util. 
- jmeter. util. 
2017-04-13 
year IS 
month is = 4 
weekDay is = 4 
DAY OF YEAR is 
DAY OF WNTH = 
HOUR OF DAY + 3 = 
MINUTE = 
MINUTE + 15 = 
MINUTE 
2017-04-13 
2017-04-13 
imeter.threads. IMeterThread: Thread is done: 1-1

 

posted @ 2017-11-28 11:55  春田花花同学会  阅读(718)  评论(0编辑  收藏  举报