您好我是该站点的新用户,并且使用JUnit测试时我的应用程序出现问题.我的问题是,当我尝试将Date方法与自身进行比较时,它始终会失败.我在测试中打印了Date对象以查看问题,并始终以包名和随机字母结束.这是Date构造函数:
public class Date
{
SimpleDateFormat dformat = new SimpleDateFormat("dd-MM-yyyy");
private int day;
private int month;
private int year;
public Date()
{
String today;
Calendar present = Calendar.getInstance();
day = present.get(Calendar.DAY_OF_MONTH);
month = present.get(Calendar.MONTH);
year = present.get(Calendar.YEAR);
present.setLenient(false);
present.set(year, month - 1, day, 0, 0);
today = dformat.format(present.getTime());
System.out.println(today);
}
Run Code Online (Sandbox Code Playgroud)
这是我的测试:
@Test
public void currentDay()
{
Date current = new Date();
System.out.println(current);
assertEquals("today:", current, new Date());
}
Run Code Online (Sandbox Code Playgroud)
但结果总是失败,我得到的结论是:
comp.work.wk.Date@d3ade7
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激.
在将我的 JAX-RS 应用程序从 Jersey 迁移到 Quarkus/Resteasy 时,我发现方法发生了行为变化evaluatePreconditions(Date lastModified)。事实上,在我的用例中,最后修改日期包含毫秒,不幸的是标题的日期格式If-Modified-Since并且Last-Modified不支持毫秒,正如我们在RFC 2616 中看到的那样。
Jersey 从提供的日期(正如我们在这里看到的)修剪毫秒数,而在 Resteasy 中,日期没有被修改,所以它实际上If-Modified-Since以不同的精度(分别是秒和毫秒)比较日期(来自标题的日期和提供的日期)以不匹配而告终,因此是 HTTP 状态代码200。
说明问题的代码:
@Path("/evaluatePreconditions")
public class EvaluatePreconditionsResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public Response findData(@Context Request request) {
final Data data = retrieveData();
final Date lastModified = Timestamp.valueOf(data.getLastModified());
final Response.ResponseBuilder responseBuilder =
request.evaluatePreconditions(lastModified);
if (responseBuilder == null) {
// Last modified date didn't match, send new content
return Response.ok(data.toString())
.lastModified(lastModified)
.build();
}
// Sending …Run Code Online (Sandbox Code Playgroud) 有没有办法比较两个日历对象,但忽略毫秒?
我写了一个比较两个日历对象的测试用例,但是有一个问题.虽然所有日,月,分和小时都匹配,但毫秒不匹配.我在获得实际日期之前得到预期日期:
/**
* @return
*/
private Calendar getExpectedOneMonthDateFromCurrentDate() {
Calendar expectedOneMonth = Calendar.getInstance();
expectedOneMonth.add(Calendar.MONTH, -1);
return expectedOneMonth;
}
assertEquals(getExpectedOneMonthDateFromCurrentDate(),
DateRange.LAST_ONE_MONTH.getToDate());
Run Code Online (Sandbox Code Playgroud) 我想知道是否有任何标准API JodaTime来比较DateTime具有指定容差的2个对象?我正在寻找一个单线程,最好使用Joda标准API.不是像这篇文章中的时间aritmethic表达式.
理想情况下,它会是这样的:
boolean areNearlyEqual = SomeJodaAPIClass.equal(dt1, dt2, maxTolerance);
Run Code Online (Sandbox Code Playgroud)
谢谢!