diff --git a/app/src/main/java/com/commandiron/wheelpickercompose/MainActivity.kt b/app/src/main/java/com/commandiron/wheelpickercompose/MainActivity.kt index dda0f31..3af3c93 100644 --- a/app/src/main/java/com/commandiron/wheelpickercompose/MainActivity.kt +++ b/app/src/main/java/com/commandiron/wheelpickercompose/MainActivity.kt @@ -22,6 +22,7 @@ import com.commandiron.wheel_picker_compose.core.TimeFormat import com.commandiron.wheel_picker_compose.core.WheelPickerDefaults import com.commandiron.wheelpickercompose.ui.theme.WheelPickerComposeTheme import java.time.LocalDateTime +import java.util.Locale class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { @@ -49,6 +50,7 @@ class MainActivity : ComponentActivity() { startDateTime = LocalDateTime.of( 2025, 10, 20, 5, 30 ), + dateLocale = Locale.US, minDateTime = LocalDateTime.now(), maxDateTime = LocalDateTime.of( 2025, 10, 20, 5, 30 diff --git a/wheel-picker-compose/src/main/java/com/commandiron/wheel_picker_compose/WheelDatePicker.kt b/wheel-picker-compose/src/main/java/com/commandiron/wheel_picker_compose/WheelDatePicker.kt index 1cb392c..4c62c59 100644 --- a/wheel-picker-compose/src/main/java/com/commandiron/wheel_picker_compose/WheelDatePicker.kt +++ b/wheel-picker-compose/src/main/java/com/commandiron/wheel_picker_compose/WheelDatePicker.kt @@ -12,11 +12,13 @@ import com.commandiron.wheel_picker_compose.core.DefaultWheelDatePicker import com.commandiron.wheel_picker_compose.core.SelectorProperties import com.commandiron.wheel_picker_compose.core.WheelPickerDefaults import java.time.LocalDate +import java.util.Locale @Composable fun WheelDatePicker( modifier: Modifier = Modifier, startDate: LocalDate = LocalDate.now(), + dateLocale: Locale = Locale.getDefault(), minDate: LocalDate = LocalDate.MIN, maxDate: LocalDate = LocalDate.MAX, yearsRange: IntRange? = IntRange(1922, 2122), @@ -30,6 +32,7 @@ fun WheelDatePicker( DefaultWheelDatePicker( modifier, startDate, + dateLocale, minDate, maxDate, yearsRange, diff --git a/wheel-picker-compose/src/main/java/com/commandiron/wheel_picker_compose/WheelDateTimePicker.kt b/wheel-picker-compose/src/main/java/com/commandiron/wheel_picker_compose/WheelDateTimePicker.kt index 8d60b05..6278bad 100644 --- a/wheel-picker-compose/src/main/java/com/commandiron/wheel_picker_compose/WheelDateTimePicker.kt +++ b/wheel-picker-compose/src/main/java/com/commandiron/wheel_picker_compose/WheelDateTimePicker.kt @@ -13,11 +13,13 @@ import com.commandiron.wheel_picker_compose.core.SelectorProperties import com.commandiron.wheel_picker_compose.core.TimeFormat import com.commandiron.wheel_picker_compose.core.WheelPickerDefaults import java.time.LocalDateTime +import java.util.Locale @Composable fun WheelDateTimePicker( modifier: Modifier = Modifier, startDateTime: LocalDateTime = LocalDateTime.now(), + dateLocale: Locale = Locale.getDefault(), minDateTime: LocalDateTime = LocalDateTime.MIN, maxDateTime: LocalDateTime = LocalDateTime.MAX, yearsRange: IntRange? = IntRange(1922, 2122), @@ -32,6 +34,7 @@ fun WheelDateTimePicker( DefaultWheelDateTimePicker( modifier, startDateTime, + dateLocale, minDateTime, maxDateTime, yearsRange, diff --git a/wheel-picker-compose/src/main/java/com/commandiron/wheel_picker_compose/WheelTimePicker.kt b/wheel-picker-compose/src/main/java/com/commandiron/wheel_picker_compose/WheelTimePicker.kt index 3db470f..be649ab 100644 --- a/wheel-picker-compose/src/main/java/com/commandiron/wheel_picker_compose/WheelTimePicker.kt +++ b/wheel-picker-compose/src/main/java/com/commandiron/wheel_picker_compose/WheelTimePicker.kt @@ -13,11 +13,13 @@ import com.commandiron.wheel_picker_compose.core.SelectorProperties import com.commandiron.wheel_picker_compose.core.TimeFormat import com.commandiron.wheel_picker_compose.core.WheelPickerDefaults import java.time.LocalTime +import java.util.Locale @Composable fun WheelTimePicker( modifier: Modifier = Modifier, startTime: LocalTime = LocalTime.now(), + dateLocale: Locale = Locale.getDefault(), minTime: LocalTime = LocalTime.MIN, maxTime: LocalTime = LocalTime.MAX, timeFormat: TimeFormat = TimeFormat.HOUR_24, @@ -31,6 +33,7 @@ fun WheelTimePicker( DefaultWheelTimePicker( modifier, startTime, + dateLocale, minTime, maxTime, timeFormat, diff --git a/wheel-picker-compose/src/main/java/com/commandiron/wheel_picker_compose/core/DefaultWheelDatePicker.kt b/wheel-picker-compose/src/main/java/com/commandiron/wheel_picker_compose/core/DefaultWheelDatePicker.kt index c63b834..9747b7d 100644 --- a/wheel-picker-compose/src/main/java/com/commandiron/wheel_picker_compose/core/DefaultWheelDatePicker.kt +++ b/wheel-picker-compose/src/main/java/com/commandiron/wheel_picker_compose/core/DefaultWheelDatePicker.kt @@ -15,11 +15,13 @@ import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.dp import java.text.DateFormatSymbols import java.time.LocalDate +import java.util.Locale @Composable internal fun DefaultWheelDatePicker( modifier: Modifier = Modifier, startDate: LocalDate = LocalDate.now(), + dateLocale: Locale = Locale.getDefault(), minDate: LocalDate = LocalDate.MIN, maxDate: LocalDate = LocalDate.MAX, yearsRange: IntRange? = IntRange(1922, 2122), @@ -37,8 +39,8 @@ internal fun DefaultWheelDatePicker( val months = (1..12).map { Month( text = if(size.width / 3 < 55.dp){ - DateFormatSymbols().shortMonths[it - 1] - } else DateFormatSymbols().months[it - 1], + DateFormatSymbols(dateLocale).shortMonths[it - 1] + } else DateFormatSymbols(dateLocale).months[it - 1], value = it, index = it - 1 ) diff --git a/wheel-picker-compose/src/main/java/com/commandiron/wheel_picker_compose/core/DefaultWheelDateTimePicker.kt b/wheel-picker-compose/src/main/java/com/commandiron/wheel_picker_compose/core/DefaultWheelDateTimePicker.kt index 2623cbe..f27603c 100644 --- a/wheel-picker-compose/src/main/java/com/commandiron/wheel_picker_compose/core/DefaultWheelDateTimePicker.kt +++ b/wheel-picker-compose/src/main/java/com/commandiron/wheel_picker_compose/core/DefaultWheelDateTimePicker.kt @@ -15,11 +15,13 @@ import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.dp import java.time.LocalDateTime import java.time.temporal.ChronoUnit +import java.util.Locale @Composable internal fun DefaultWheelDateTimePicker( modifier: Modifier = Modifier, startDateTime: LocalDateTime = LocalDateTime.now(), + dateLocale: Locale = Locale.getDefault(), minDateTime: LocalDateTime = LocalDateTime.MIN, maxDateTime: LocalDateTime = LocalDateTime.MAX, yearsRange: IntRange? = IntRange(1922, 2122), @@ -50,6 +52,7 @@ internal fun DefaultWheelDateTimePicker( //Date DefaultWheelDatePicker( startDate = startDateTime.toLocalDate(), + dateLocale = dateLocale, yearsRange = yearsRange, size = DpSize( width = if(yearsRange == null ) size.width * 3 / 6 else size.width * 3 / 5 , @@ -98,6 +101,7 @@ internal fun DefaultWheelDateTimePicker( //Time DefaultWheelTimePicker( startTime = startDateTime.toLocalTime(), + dateLocale = dateLocale, timeFormat = timeFormat, size = DpSize( width = if(yearsRange == null ) size.width * 3 / 6 else size.width * 2 / 5 , diff --git a/wheel-picker-compose/src/main/java/com/commandiron/wheel_picker_compose/core/DefaultWheelTimePicker.kt b/wheel-picker-compose/src/main/java/com/commandiron/wheel_picker_compose/core/DefaultWheelTimePicker.kt index 5a69125..2bbfe7d 100644 --- a/wheel-picker-compose/src/main/java/com/commandiron/wheel_picker_compose/core/DefaultWheelTimePicker.kt +++ b/wheel-picker-compose/src/main/java/com/commandiron/wheel_picker_compose/core/DefaultWheelTimePicker.kt @@ -14,13 +14,17 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.TextStyle import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.dp +import java.time.LocalDate import java.time.LocalTime +import java.time.format.DateTimeFormatter import java.time.temporal.ChronoUnit +import java.util.Locale @Composable internal fun DefaultWheelTimePicker( modifier: Modifier = Modifier, startTime: LocalTime = LocalTime.now(), + dateLocale: Locale = Locale.getDefault(), minTime: LocalTime = LocalTime.MIN, maxTime: LocalTime = LocalTime.MAX, timeFormat: TimeFormat = TimeFormat.HOUR_24, @@ -59,12 +63,12 @@ internal fun DefaultWheelTimePicker( val amPms = listOf( AmPm( - text = "AM", + text = amPmStringByLocale(AmPmValue.AM, dateLocale), value = AmPmValue.AM, index = 0 ), AmPm( - text = "PM", + text = amPmStringByLocale(AmPmValue.PM, dateLocale), value = AmPmValue.PM, index = 1 ) @@ -389,6 +393,19 @@ private fun amPmValueFromTime(time: LocalTime): AmPmValue { return if(time.hour > 11) AmPmValue.PM else AmPmValue.AM } +private fun amPmStringByLocale(amPmValue: AmPmValue, locale: Locale): String { + val amPmTime = with(LocalDate.now()) { + if (amPmValue == AmPmValue.AM) { + atTime(0, 0) + } else { + atTime(12, 0) + } + } + val timeFormat = DateTimeFormatter.ofPattern("a", locale) + + return amPmTime.format(timeFormat) +} +