JMeterのBSF Pre Processorでjavascriptを用いてゴリゴリする。
環境
- Mac OS/X 10.7.5
- JMeter 2.9
設定
BSF Pre Processor Script の中身をこんな感じでゴリゴリ
// Parameters 第一引数 (変換後 のタイムゾーンオフセット [時])
var tzHoursOffset = args[0];
// Parameters 第二引数 (変換後 のタイムゾーンオフセット [分])
var tzMinutesOffset = args[1];
// 引数のタイムゾーンオフセットをミリ秒単位に変換
var tzOffset = tzHoursOffset*60*60*1000 + tzMinutesOffset*60*1000;
var localDate = new Date();
var localOffset = localDate.getTimezoneOffset() * 60000;
var utc = localDate.getTime() + localOffset;
var targetTime = utc + tzOffset;
var now = new Date(targetTime);
var year = now.getFullYear();
var month = zeroPadding(now.getMonth() + 1);
var date = zeroPadding(now.getDate());
var hour = zeroPadding(now.getHours());
var minutes = zeroPadding(now.getMinutes());
var seconds = zeroPadding(now.getSeconds());
// 変数'utcDate'に "YYYY-MM-DD'T'HH:mm;ss +HH:mm"な文字列を設定する
vars.put('utcDate', year + "-" + month + "-" + date + 'T' + hour + ":" + minutes + ":" + seconds + getTimeZoneString(tzHoursOffset, tzMinutesOffset));
/**
* 時、分を"+HH:MM" フォーマットに変換
* @param hourOffset {Number} 時
* @param minutesOffset {Number} 分
* @return {String} "+HH:MM"
*/
function getTimeZoneString(hourOffset, minutesOffset){
var sign = hourOffset >= 0 ? "+" : "-";
var hours = zeroPadding(""+hourOffset);
var minutes = zeroPadding(""+minutesOffset);
return sign + hours + ":" + minutes;
}
/**
* 1桁の数値を 0埋め
*/
function zeroPadding(target){
return ('00'+target).slice(-2);
}
出力イメージ
出力結果
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 124
User-Agent: Java/1.7.0_09
Host: localhost:8000
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
<RequestBody>
<element sequence="3">
<timestamp>2013-10-12T05:06:41+00:00</timestamp>
</element>
</RequestBody>POST / HTTP/1.1
Connection: close