From 260e2ac11785db35164cc89acf17ce7ea7ce6bf3 Mon Sep 17 00:00:00 2001 From: Michael Mason Date: Wed, 24 Dec 2025 13:09:37 +0000 Subject: [PATCH] fix: date picker off by one day due to Material DatePicker returning timestamp for date at UTC midnight --- .../rndatetimepicker/RNMaterialDatePicker.kt | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/android/src/main/java/com/reactcommunity/rndatetimepicker/RNMaterialDatePicker.kt b/android/src/main/java/com/reactcommunity/rndatetimepicker/RNMaterialDatePicker.kt index 9dece7a1..6fec731a 100644 --- a/android/src/main/java/com/reactcommunity/rndatetimepicker/RNMaterialDatePicker.kt +++ b/android/src/main/java/com/reactcommunity/rndatetimepicker/RNMaterialDatePicker.kt @@ -179,8 +179,14 @@ class RNMaterialDatePicker( ) ) - newCalendar.timeInMillis = selection - + // Material DatePicker returns timestamp in UTC at midnight for the selected date. + // Extract year, month, day from UTC, then set them in the target timezone + val utcCalendar = Calendar.getInstance(java.util.TimeZone.getTimeZone("UTC")) + utcCalendar.timeInMillis = selection + + newCalendar[Calendar.YEAR] = utcCalendar[Calendar.YEAR] + newCalendar[Calendar.MONTH] = utcCalendar[Calendar.MONTH] + newCalendar[Calendar.DAY_OF_MONTH] = utcCalendar[Calendar.DAY_OF_MONTH] newCalendar[Calendar.HOUR_OF_DAY] = initialDate.hour() newCalendar[Calendar.MINUTE] = initialDate.minute() newCalendar[Calendar.SECOND] = 0