我希望到达的日期是-1个月+1天,应该与开始日期相差0个月。
使用joda-time 2.10:
@IBAction func savePasswordButton(_ sender: Any) {
if let context = (UIApplication.shared.delegate as? AppDelegate)?.persistentContainer.viewContext {
if homeVC.mainframe.contains(where: { $0.username == createHolderUsername.text! }) {
let title = "Duplicate"
let message = "\(createHolderUsername.text!) already exists"
let alert = UIAlertController(title: title, message: message, preferredStyle: UIAlertController.Style.alert)
alert.addAction(UIAlertAction(title: "OK", style: UIAlertAction.Style.default, handler: nil)
self.present(alert, animated: true, completion: nil)
}
else {
let holder = PasswordCoreData(entity: PasswordCoreData.entity(), insertInto: context)
if let title = createHolderItem.text {
holder.item = title
holder.username = createHolderUsername.text!
holder.password = createHolderPassword.text!
}
try? context.save()
navigationController?.popViewController(animated: true)
}
}
}
,但与输入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
相同的代码将返回-1,这是错误的。
在Joda库中,这看起来像是一个小问题。 就是这种情况:按转换月份数按-1个月的变更日期进行移位,并保持日数不大于输入中的数字,但是日期之间的月份差异取决于月份中的日期。
您知道其他任何可行的解决方案吗?
我发现带有ChronoUnit的JSR-310-解决了这个问题,但它需要Java8。我想继续使用Java7。