jmeter XML中的时间戳值有问题

tjvv9vkg  于 2023-03-02  发布在  其他
关注(0)|答案(2)|浏览(133)

是否有可能将XML中的时间戳(由表中的视图结果生成,同时写入文件)从毫秒(Unix)更改为标准Windows日期格式?

lf5gs5x2

lf5gs5x21#

开箱即用,您可以更改时间戳输出格式,仅用于CSV输出(将“查看表中的结果”保存为csv格式,而不是xml格式)。XML格式目前不支持除毫秒以外的任何格式。
如果在这种情况下CSV代替XML是可接受的,您只需在jmeter.properties(%JMETER_HOME%/bin/jmeter.properties)中设置1个属性:

# Timestamp format - this only affects CSV output files
# legitimate values: none, ms, or a format suitable for SimpleDateFormat
#jmeter.save.saveservice.timestamp_format=ms
jmeter.save.saveservice.timestamp_format=yyyy/MM/dd HH:mm:ss.SSS

或者,对于非GUI模式,提供与命令行选项相同的选项:

-Jjmeter.save.saveservice.timestamp_format="yyyy-MM-dd HH:mm:ss"

如果仍然需要XML,则可能必须使用任何脚本来处理生成的jtl/xml,以将所有类似Unix的时间戳转换为所需的格式。
例如,对于GMT时间:

=(((X)/1000+((365*70+17)*86400))/86400)+2

还可以查看this article以了解详细信息和可能的方法。

thigvfpy

thigvfpy2#

你可以用Excel打开它,创建一个新的列来进行从Unix到Excel的时间戳转换,并每次将格式设置为date aaaa-mm-gg h:mm;@,正如上面另一个答案所建议的那样。
或者用支持Python脚本的文本编辑器打开它,然后创建一个Python脚本来转换所有的时间戳。
我使用记事本++与Python脚本插件。然后在Plugin -> Python Script -> New Script我创建了以下脚本:

import datetime
import math
import re

# Define a method which uses Epoch converter (Unix timestamp, counted in seconds, not milliseconds)
def my_replace(match):
    result = match.group().replace("\"", "") # remove quotes
    timestamp = math.floor(int(result) / 1000) # remove millis
    timestamp = datetime.datetime.fromtimestamp(timestamp)
    timestamp = str(timestamp) + "." + result[-3:] # add millis
    return "\"" + timestamp + "\"" # put quotes back

# First we'll start an undo action, then Ctrl-Z will undo the actions of the whole script
editor.beginUndoAction()

# retrieve possible Unix timestamps in milliseconds
# they have to be between quotes and in range between
# from Sunday 09/09/2001 01:46:40.000 ("1000000000000")
# to   Friday 11/06/2128 08:53:19.999 ("4999999999999")
# then it converts to readable dates format
editor.rereplace(r'\"[1-4]\d{12}\"', my_replace)

# End the undo action, so Ctrl-Z will undo the above two actions
editor.endUndoAction()

(Note editor是Python Script用来定义Notepad++源代码的专用示例,因此,如果你在不同的编辑器中创建脚本,你必须弄清楚它是如何在Phython Scripts工具中识别源代码的。)
然后我按照插件的建议将脚本保存为TimestampToDate.py,之后我可以每次使用Plugin -> Python Script -> Scripts -> TimestampToDate将所有xml时间戳替换为可读日期,它还自动添加了本地时区,Python默认是这样。
如果你喜欢用文本编辑器而不是Excel来阅读它,这是第一次使用一个更长的方法,但是一旦你保存了脚本,每次从菜单中执行它就只是一个方法了。

相关问题