比较平等日期的正确方法是什么



我目前正在从传统的API迁移到微服务。传统的API通过使用字符串进行日期比较以实现相等。

示例

String date1FromDataSource1 = "20221110";
String date2FromDataSource2 = "2022-11-10:00:00.000";
String data2FromDataSource2Formatted = formatDateAsPerDataSource1(date1FromDataSource2);
Boolean areDatesEqual = data1FromDataSource1.equals(data2FromDataSource2Formatted);

我应该继续采用这种方式,还是将两者都转换为ZoneDateTime并进行日期比较。

实现并不重要
只有系统测试才重要。

遗留系统应该有足够的系统测试,如果测试通过,服务就可以部署到生产环境中。如果还不够,就写更多,直到这是真的。

系统测试是独立于实现的,并且完全可移植。选择你能想到的最简单的实现。如果新系统的系统测试通过,那么您的实现就很好。

单元测试依赖于实现,也应该编写。质量得到保证,单元和系统测试通过,您可以部署。

至于实现的建议,因为您处理的是字符串,所以可以将它们作为字符串进行比较。

这里有一个入门级实现:

public boolean areSame(String date1, String date2) {
return yyyymmdd(date1).equals(yyyymmdd(date2));
}
/* @return the first 8 digits found in str */
private String yyyymmdd(String str) {
return str.replaceAll("\D", "").substring(0, 8);
}

相关内容

  • 没有找到相关文章

最新更新