CCCPaste

date range picker android kotlin

fun dateWork() {
    try {
        // Create and show the picker
        val builder = MaterialDatePicker.Builder.dateRangePicker()
        val constraintsBuilder = CalendarConstraints.Builder()
        constraintsBuilder.setValidator(
            DateValidatorPointBackward.now() // Only past dates
        )
        builder.setTitleText("Select Date Range")
        builder.setCalendarConstraints(constraintsBuilder.build())
        builder.setSelection(
            Pair(
                MaterialDatePicker.thisMonthInUtcMilliseconds(),
                MaterialDatePicker.todayInUtcMilliseconds()
            )
        )
        val picker = builder.build()
        picker.addOnPositiveButtonClickListener { selection ->
            val startDate = selection.first
            val endDate = selection.second
            // Convert timestamps (Long) to readable dates
            val sdf =
                java.text.SimpleDateFormat("dd/MM/yyyy", java.util.Locale.getDefault())
            val start = sdf.format(java.util.Date(startDate))
            val end = sdf.format(java.util.Date(endDate))

            // Example: update UI
            binding.orderDate.text = "Selected: $start - $end"
        }


        binding.orderDate.setOnClickListener {
            picker.show(supportFragmentManager, picker.toString())
        }

    } catch (e: Exception) {
        e.printStackTrace()
    }
}

import androidx.core.util.Pair
import com.google.android.material.datepicker.MaterialDatePicker