java - 如何根据日期和时间自动标记数组列表中的相关记录?
问题描述
我正在设计一个简单的 covid 19 跟踪系统。每次客户(ArrayList 中的对象)访问 Shop(ArrayList 中的对象)时,系统都会创建存储在 ArrayList 中的 Visits 对象。
超类详细信息。
public class Details {
private String name;
private String phoneNumber;
private Status status;
// Customer
public Details(String name, String phoneNumber, Status status) {
this.name = name;
this.phoneNumber = phoneNumber;
this.status = status;
}
我正在使用 java.time 包来创建日期时间以及像这样的访问对象
public class Visit extends Details {
private String dateTimeFinal;
private String shopName;
public Visit(String name, String phoneNumber,String shopName, Status status) {
super(name, phoneNumber, status);
this.shopName = shopName;
LocalDateTime dateTime = LocalDateTime.now();
DateTimeFormatter dateTimeFormatted = DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss");
dateTimeFinal = dateTime.format(dateTimeFormatted);
}
我的客户类构造函数看起来像这样
public class Customer extends Details {
private String password;
public Customer (String name, String phoneNumber, String password, Status status){
super(name, phoneNumber, status);
this.password = password;
}
我的商店类构造函数看起来像这样
public class Shop extends Details{
private String managerName;
public Shop(String name, String phoneNumber, Status status, String managerName){
super(name, phoneNumber, status);
this.managerName = managerName;
}
我在另一个看起来像这样的文件中也有一个状态枚举
public enum Status{
NORMAL,
CASE,
CLOSE
}
我现在要完成的是,如果已标记为 CASE 的客户访问商店,则在前后 1 小时时间范围内访问该商店的所有客户都会自动被标记为密切接触者 (CLOSE)。我还想知道如何创建不是 localdatetime.now 的时间和日期,因为我需要生成访问以测试标记算法是否有效。
解决方案
使用其中一种LocalDateTime.of()
方法(在此处找到)来创建特定时间。
为了跟踪可能的标志,一种解决方案是跟踪 a 的最后一个风险Visit
,Shop
并且每次对其进行新访问Shop
以检查它是否足够新,如果是,则更新Status
、和。用来比较时间。Visit
Shop
Customer
LocalDateTime.minusHours()