如何使用Robot + Linux在json文件中以UTC(Zulu UTC)格式替换当前时间?
Posted
技术标签:
【中文标题】如何使用Robot + Linux在json文件中以UTC(Zulu UTC)格式替换当前时间?【英文标题】:How to replace with current time in UTC (Zulu UTC) format in json file using Robot + Linux? 【发布时间】:2021-05-09 01:38:34 【问题描述】:我正在尝试使用 ROBOT 框架将 JSON 文件中的时间值替换为当前时间,但时间格式为 "YYYY-MM-DDTHH:MM:SS.SZ"
,我无法弄清楚...
x.json
"abc": "123",
"xyz": [ "a1b2c3"],
"time": "2021-02-04T13:01:27.4Z"
我想用当前时间或 [当前时间 + 3-5 分钟] 更新它, 假设当前时间是 18:00 我需要 JSON 中的值是 18:05
更新的 x.json
"abc": "123",
"xyz": [ "a1b2c3"],
"time": "2021-02-04T18:05:00.0Z"
我尝试使用sed
,但它无法更改为"YYYY-MM-DDTHH:MM:SS.SZ"
格式。
即使date -u
也不会以上述格式返回。
有没有办法使用 ROBOT + linux 命令来做到这一点?
【问题讨论】:
这与 Python 甚至编程有什么关系?至于格式,没有什么奇怪、不寻常或特别的。它是日期literals(即表示日期的字符串)的ISO8601 格式,被大多数语言、数据库、javascript 本身和JSON 的事实上的日期标准所使用。 所有 JSON解析器和序列化器识别它并以该格式发出日期。您可以反序列化原始 JSON 文本,修改您想要的对象,然后将它们序列化回文件 这能回答你的问题吗? Extract json value with sed 更新后的文件是否必须具有完全相同的格式(多行,有空行),还是仅是有效的 JSON? 【参考方案1】:Robot 有一个 DateTime 库,可以轻松将字符串转换为日期,并获取当前日期。一旦你有了一个日期对象,你就可以随心所欲地操作它。
以下示例将执行以下操作:
从 x.json 导入 json 数据 将其转换为 python 对象 获取当前日期 将新日期保存到 python 对象 将 python 对象转换回 json 字符串 将json字符串写入x.json这不会保留原始数据的确切格式(即:不保留空白行),但 x.json 仍将是有效的 json,但时间已更改。
*** Settings ***
Library DateTime
Library OperatingSystem
Library Collections
*** Test cases ***
Example 1
# read the raw data
$json= Get file x.json
# convert the data to a python object
$object= Evaluate json.loads($json)
# Get the current date/time in UTC
$new_date= get current date time_zone=utc
# save the new data to the dictionary
Set to dictionary $object time=$new_date
# convert the object back to json
$json= evaluate json.dumps($object, indent=4)
log to console \n$json
# overwrite the original file with the new json
create file x.json content=$json
【讨论】:
谢谢你,但我不想硬编码时间值,它必须替换为当前/当前时间。 @UdayT:这只是一个例子。如果你想要当前时间,DateTime 库有一个函数可以返回它,然后你可以使用当前时间而不是硬编码的时间。你也想要当前日期吗?那会更容易。 是的@Bryan,正是我正在寻找的,日期和时间替换为当前日期和时间。 你的意思是:“获取当前日期 UTC”?以上是关于如何使用Robot + Linux在json文件中以UTC(Zulu UTC)格式替换当前时间?的主要内容,如果未能解决你的问题,请参考以下文章
需要在 Linux 服务器中使用 java Robot 类的替代品
在 Robot 框架中解析 JSON 输出 [在论坛中尝试了大多数选项]