我在计算两个dateField之间的天数时遇到了一些问题。我已经尝试了
`
DateField dateStart = new DateField();
DateField dateEnd = new DateField();
DateTime start = new DateTime(dateStart);
DateTime end = new DateTime(dateEnd);
int days = Days.daysBetween(new DateTime(start), new DateTime(end)).getDays();
`
以下是运行此代码后出现的错误
java.lang.IllegalArgumentException: No instant converter found for type: com.vaadin.ui.DateField
我也尝试过使用ChronoUnit
LocalDate startDate = LocalDate.now().minusDays(1);
LocalDate endDate = LocalDate.now();
long days = Period.between(startDate, endDate).getDays();
assertEquals(1, days);
long days2 = ChronoUnit.DAYS.between(startDate, endDate);
assertEquals(1, days2);
还有柔道时光
DateTime startDate = new DateTime().minusDays(1);
DateTime endDate = new DateTime();
Days d = Days.daysBetween(startDate, endDate);
int days = d.getDays();
这两个代码都出现NullPointerException错误。有什么方法可以让我获得天数。
答案 0 :(得分:1)
这是使用java 8查找中间日期值的最简单方法。
LocalDate startDate = LocalDate.now().minusDays(1);
LocalDate endDate = LocalDate.now();
long days = Period.between(startDate, endDate).getDays();
System.out.println(days);
答案 1 :(得分:1)
其他答案显示了如何使用Java 8计算两个日期之间的差异。但实际问题是如何从Vaadin DateField
获取日期(正如p.streef和Ramachandran GA指出的那样)评论)。使用dateStart.getValue()
作为返回java.util.Date
的内容,可以传递给new DateTime()
。
答案 2 :(得分:0)
以下代码段有效。你看到没有即时转换器错误的原因之一是你想要一天的时间。我在这里提到过一天的开始。有趣的读到这里(How to convert Joda Localdate to Joda DateTime?)。
LocalDateTime startDateTime = LocalDate.now().atStartOfDay().minusDays(1);
LocalDateTime endDateTime = LocalDate.now().atStartOfDay();
long days = Period.between(startDateTime.toLocalDate(), endDateTime.toLocalDate()).getDays();
System.out.println("The difference in dates is " + days);
在输出处:日期的差异为1