如何将日期格式化为本地日期



你好,我需要帮助格式化日期,以便我的测试阅读它。它需要格式化成月,日,年这是我的代码

import java.util.Date;
import java.util.concurrent.atomic.AtomicLong;
public class Appointment{
private final String appointmentId;
private Date appointmentDate;
private String description;
public Appointment( Date appointmentDate, String desc) {

this.appointmentId = String.valueOf(idGenerator.getAndIncrement());

Date today = new Date();

appointmentDate = today;

if (description == null || description.isBlank()) {
this.description = "NULL";
//If name is longer than 50 characters,
} else if(description.length() > 50) {
this.description = desc;
} else {
this.description = desc;
}
}

public String getAppointmentId() {
return appointmentId;
}
public Date getAppointmentDate() {
return appointmentDate;
}
public String getDescription() {
return description;
}   

public void setAppointmentId(String appointmentId) {
}
public void setAppointmentDate (Date appointmentDate) {

}
public void setDescription() {

}   

}

这是我到目前为止的测试代码

import static org.junit.jupiter.api.Assertions.*;
import java.util.Calendar;
import java.util.Date;
import org.junit.jupiter.api.Test;
class AppointmentTest {

@Test
void testAppointment() {
Appointment appointment = new Appointment( "(this is where i need help)", "To get computer fixed");
assertTrue(appointment.getAppointmentDate().equals("LocalDate"));
assertTrue(appointment.getDescription().equals("To get computer fixed"));
}

}

我不知道如何使本地日期出现在新的约会创建在我的测试。是否有一个特殊的功能,我可以使用本地日期,或者我需要分别输入月,日和年。如果是这样的话,我该怎么做呢?

这很难测试的一个原因是java.util.Date实际上代表的是时间上的一个瞬间,而不是月、日和年的组合;虽然这个类的设计者最初试图让它代表两者。如果您试图使用java.util.Date来使它表示一个特定的日历日期,那么您最终必须做相当多的工作。

有一个更好的类你可以使用-java.time.LocalDate。这实际上代表了年、月和日的组合;还有一些简洁的日期运算方法

还有,你的类有几个问题

  1. 你可以传入你想要预约的日期(好吧,实际上是时间上的一个瞬间,而不是日期),但是你的构造函数用当前的瞬间覆盖它。我不认为您想这样做,因为它使实际构建具有所选日期的Appointment变得不可能。

  2. 您正在检查description-类中的字段,实际上应该检查desc

如果您修改了Appointment类,使其使用LocalDate而不是Date,则构造函数可能看起来像这样:

public Appointment(LocalDate appointmentDate, String desc) {

this.appointmentId = String.valueOf(idGenerator.getAndIncrement());
this.appointmentDate = appointmentDate;

if (desc == null || desc.isBlank()) {
this.description = "NULL";
} else if(desc.length() > 50) {
this.description = desc.substring(0, 50);
} else {
this.description = desc;
}
}

您应该能够像这样处理测试日期。

@Test
public void testAppointment() {
LocalDate todaysDate = LocalDate.now();
Appointment appointment = new Appointment( todaysDate, "To get computer fixed");
assertEquals(todaysDate, appointment.getAppointmentDate());
assertEquals("To get computer fixed", appointment.getDescription());
}

相关内容

  • 没有找到相关文章

最新更新