java - -1个月+1天的时间操作与开始仍有1个月的差异
问题描述
我想达到 -1month +1day 的日期,这应该与开始日期相差 0 个月。
使用 joda-time 2.10:
int day = 29;
LocalDate date1 = new LocalDate(new GregorianCalendar(2019, Calendar.JUNE, day).getTime());
LocalDate date2 = date1.plusMonths(-1).plusDays(1);
Months.monthsBetween(date1,date2).getMonths(); // returns 0 <- it's OK
但与输入相同的代码int day = 30;
返回 -1 这是不好的。
这在 Joda 库中看起来是无关紧要的。这是一种情况:按 -1month 更改日期按班次月份编号并保持日期编号不大于输入,但日期之间的月份差异取决于月份中的某天。
你知道任何替代和有效的解决方案吗?
我找到了带有ChronoUnit的 JSR-310 - 解决了这个问题,但它需要 Java8。我想留在Java7上。
解决方案
推荐阅读
- mvvm - Xamarin.froms 中用于控制值的滑块
- asp.net-core - 如何在 VS Code 中获取 NuGet 的版本列表和最新版本?
- swiftui - Google 使用 SwiftUI 放置自动完成 API
- sapui5 - 如何在单击时将分段按钮更改为下一个
- .net - 套接字上的线程太慢
- ethereum - 无法在 Ubuntu 16.04 上安装旧版本的 Geth 1.8.27
- .net-core - 如何使用默认的 ITextTemplatingEngineHost 来运行 processTemplate?
- arrays - 如何从具有不同返回类型的 2 个重载函数返回一个值?
- .net - .NET 核心包
- swift - 迅速。如何设置自定义数字格式?带有空格分隔符和点后的两位数