我有一个日期选择器,一个是开始日期,一个是结束日期,我的日期看起来像是字符串:
2020年6月6日开始
2020-05-08结束
我的问题是,如何每次计算差异?
例如,如果开始日期为14/05,则结束日期不能早于14/05。
目前有这张支票:
val from= calendar.clone()
if (isStarted) {
from.add(Calendar.DATE, -29)
} else {
val dayOfMonth: Int = extractDay(selectedStartDate)
from.add(Calendar.DATE, ??) //the problem, set the minimum date to start date
}
datePicker.minDate = from.timeInMillis
//Returning the day of startDate
private fun extractDay(selectedStartDate: String?): Int {
return selectedStartDate?.substring(selectedStartDate.length - 2)!!.toInt()
}
但是有两个问题。
1)如何计算差异?
2)例如,如果用户选择开始日期和结束日期,然后再次选择开始日期,则可能是开始日期将在结束日期之后,如何防止这种情况发生?
UPDATE:问题2在评论中回答
override fun onDateSet(view: DatePicker?, year: Int, month: Int, dayOfMonth: Int) {
val calendar = Calendar.getInstance()
calendar.set(year, month, dayOfMonth)
setNavigationResult(args.key, calendar.timeInMillis)
}
如果使用导航组件,则可以使用此代码,否则,在关闭DatePicker之后,可以在onActivityResult
中获得毫秒。
2)为解决此问题,您可以在每次更新后比较startDate和endDate。这是正常的做法。为此,您应该添加带有两个长参数的方法(开始和结束日期(以毫秒为单位))。之后,您可以比较两个变量,如果结束日期小于开始日期,则可以显示错误并阻止进一步的操作。