我试图获取两个给定日期之间的所有日期,但无法获取。
我试过这样。
val dateformat = new SimpleDateFormat("yyyy-MM-dd")
var start = dateformat.parse("2020-10-01")
var end = dateformat.parse("2020-10-12")
val days = Days.daysBetween(start, end)
val months = Months.monthsBetween(start, end)
但是我有天没找到?
编辑:我的导入是:
import org.joda.time.DateTime;
import org.joda.time.Days;
import org.joda.time.Months;
java.time
为了完整起见,这里是相同代码的java.time版本。java.time是现代java日期和时间API,也是Joda-time的继承者。不过,您必须自己翻译我的Java代码。
import java.time.temporal.ChronoUnit;
import java.time.LocalDate;
LocalDate start = LocalDate.parse("2020-10-01");
LocalDate end = LocalDate.parse("2020-10-12");
long days = ChronoUnit.DAYS.between(start, end);
long months = ChronoUnit.MONTHS.between(start, end);
System.out.format("Between %s and %s are %d days or %d months%n",
start, end, days, months);
输出:
2020-10-01至2020-10-12之间为11天或0个月
Joda Time主页上写着:
请注意,Joda Time被认为是一个基本上"完成"的项目。没有计划进行重大改进。如果使用Java SE 8,请迁移到CCD_ 1(JSR-310(。
您的代码出了什么问题
但我有天没找到?
Scala并不是找不到Days.daysBetween()
。您的start
和end
的类型为Date
,消息的意思是Scala找不到接受两个Date
参数的daysBetween
方法。相反,您需要传递两个类型为ReadableInstant
(或ReadablePartial
,但情况不同(的对象。由于Joda自己的java.time
0类实现了ReadableInstant
接口,因此您可以使用其中的两个,如另一个答案所示。
链接
- Oracle教程:日期时间,解释如何使用java.Time
- Joda Time Home
您不能将java时间和joda时间混合使用。使用joda创建日期时间。
import org.joda.time.format.DateTimeFormat
import org.joda.time.{Days,Months}
val formatter = DateTimeFormat.forPattern("yyyy-MM-dd")
var start = formatter.parseDateTime("2020-10-01")
var end = formatter.parseDateTime("2020-10-12")
val days = Days.daysBetween(start, end)
val months = Months.monthsBetween(start, end)