【问题标题】:How to replace with current time in UTC (Zulu UTC) format in json file using Robot + Linux?如何使用Robot + Linux在json文件中以UTC(Zulu UTC)格式替换当前时间?
【发布时间】: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?

标签: python json linux sed robotframework


【解决方案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”?
猜你喜欢
  • 1970-01-01
  • 2017-06-11
  • 1970-01-01
  • 2011-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-27
  • 2018-07-29
相关资源
最近更新 更多