如何为月份名称分配一个数字 - Robot Framework

how to assign month name a number - Robot Framework

我通过读取我页面中的一个字段来获取时间戳,该字段中有月份名称,例如 "Feb 28, 2015 12:59"。我想验证它是哪个月份名称并为其分配月份编号。我想获取诸如“2015 年 5 月 28 日 12:59”之类的日期。我已经划分了时间戳,我正在尝试将月份名称转换为数字,如下所示:

|| ${monthNmToNum} |    Set Variable If |'${monthAbr}' == 'Feb' |   2
|| ${monthNmToNum} |    Set Variable If |'${monthAbr}' == 'Mar' |   3
|| ${monthNmToNum} |    Set Variable If |'${monthAbr}' == 'Apr' |   4

但问题是,如果日期戳中的月份名称为 "Feb",则 ${monthNmToNum} 最后变为 "none"。 我真正想要实现的是将这个时间戳转换为纪元。 我正在将 RIDE 用于机器人框架。如果我遗漏了上面的某些信息,请告诉我。

一个简单的解决方案是创建一个包含月份缩写的列表,然后让 python 在列表中查找缩写。只要您确定缩写是什么,这就会起作用,并且它们将始终在列表中:

*** Variables ***
| @{MONTHS} | Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec

*** Testcase ***
| Convert month abbreviation to number
| | ${monthAbr}= | Set variable | Feb
| | ${month}= | evaluate | ${MONTHS}.index("Feb") + 1
| | Should be equal as numbers | ${month} | 2

但是,如果您的最终目标是获得 epoc,robot 在 DateTime library. That was answered in this other question you asked earlier: Convert string to seconds - Robot framework 中有一个内置关键字可以实现这一目标。

我们有 DateTime 库,我们可以用它来转换日期和 Python支持不同date formats

查看下面的代码:

${MonthNumber}=    Convert Date    ${Date}    result_format=%m

它会给你月份作为数字,它解决了你的问题。

尝试 https://docs.python.org/3/library/datetime.html 中列出的一些百分比格式代码指令,例如:%b Month as locale’s abbreviated name.

因此:${datetime_standard} = Convert Date 1977 May 4 date_format=%Y %b %d

产量:1977-05-04 00:00:00.000