如何计算开始日期和结束日期的差异

问题描述 投票:0回答:2

我有一个日期选择器,一个是开始日期,一个是结束日期,我的日期看起来像是字符串:

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在评论中回答

android kotlin datepicker android-datepicker
2个回答
1
投票
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。这是正常的做法。为此,您应该添加带有两个长参数的方法(开始和结束日期(以毫秒为单位))。之后,您可以比较两个变量,如果结束日期小于开始日期,则可以显示错误并阻止进一步的操作。     

-1
投票
© www.soinside.com 2019 - 2024. All rights reserved.