Java 匹配assertEquals的日期格式

Java 匹配assertEquals的日期格式,java,selenium,automation,automated-tests,assert,Java,Selenium,Automation,Automated Tests,Assert,我目前正在编写一个自动化测试,首先调用一个方法从数据库检索日期值,然后调用一个方法驱动Selenium从UI获取日期值,然后AsserteQual以确保它们匹配。实际上,我将这些日期值与一些其他值连接成一个字符串值,并断言这会增加另一件需要记住的事情 在我的数据库方法中,日期是以原始形式提取出来的,看起来像2018-06-30 00:00:00.000,这是一种日期数据类型 然后我将这个日期转换成字符串,格式如下: SimpleDateFormat formatter = new

我目前正在编写一个自动化测试,首先调用一个方法从数据库检索日期值,然后调用一个方法驱动Selenium从UI获取日期值,然后AsserteQual以确保它们匹配。实际上,我将这些日期值与一些其他值连接成一个字符串值,并断言这会增加另一件需要记住的事情

在我的数据库方法中,日期是以原始形式提取出来的,看起来像
2018-06-30 00:00:00.000
,这是一种日期数据类型

然后我将这个日期转换成字符串,格式如下:

        SimpleDateFormat formatter = new SimpleDateFormat("d MMMM yyyy");
        String strPolicyExpiry = formatter.format(strPolicyExpiryUnformatted);
这使得日期看起来像2018年6月30日

但是我的UI元素收回了一个字符串
2018年6月30日
,这反过来又使assertEquals失败,因为UI中有“th”

我试着用正则表达式从UI字符串中删除'st,nd,rd,th',但这看起来并不容易。所以现在我试图将数据库端改为添加“st,nd,rd,th”,但这一切似乎都有点混乱和冗长


我希望有一个简单的方法来解决这个问题,因为这一定是自动化测试人员的常见问题。有什么想法吗?

dateStr.replace(“th”和“)
或请参见查看:UI中的哪些内容将其格式化为
30th
?那是图书馆吗?为什么不使用相同的库来格式化它以进行比较?它是客户端的JS库吗?@ScaryWombat感谢您的回复。但是一根直的绳子代替不了它。例如,
dateStr.replace(“st”和“)
将使“August”变为“Augu”。Hack:
dateStr.replaceAll(“^([0-9]+)(?:st|nd | rd | th)”,“$1”)
此外,
simpledteformat
应尽可能替换为
datetimeformat