我目前正在从传统的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);
}