From 228ae9bf9171712b5cc97b270b63f696743d9070 Mon Sep 17 00:00:00 2001 From: Henning Hall Date: Tue, 13 Nov 2018 20:42:25 +0100 Subject: [PATCH] Bugfix: Changes in "date"-mode wont work with some locales. --- .../com/henninghall/date_picker/Utils.java | 1 + .../date_picker/wheels/MonthWheel.java | 23 +++++++++++++++---- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/android/src/main/java/com/henninghall/date_picker/Utils.java b/android/src/main/java/com/henninghall/date_picker/Utils.java index ed8fbc0..967dd2f 100644 --- a/android/src/main/java/com/henninghall/date_picker/Utils.java +++ b/android/src/main/java/com/henninghall/date_picker/Utils.java @@ -26,6 +26,7 @@ public class Utils { } public static Date isoToDate(String date) { + if(date == null) return null; try { return getIsoUTCFormat().parse(date); } catch (ParseException e) { diff --git a/android/src/main/java/com/henninghall/date_picker/wheels/MonthWheel.java b/android/src/main/java/com/henninghall/date_picker/wheels/MonthWheel.java index ee6a596..8693911 100644 --- a/android/src/main/java/com/henninghall/date_picker/wheels/MonthWheel.java +++ b/android/src/main/java/com/henninghall/date_picker/wheels/MonthWheel.java @@ -15,17 +15,16 @@ public class MonthWheel extends Wheel final int min = 0; final int max = 11; final Calendar cal = this.pickerView.getInitialDate(); - final SimpleDateFormat format = new SimpleDateFormat(this.getFormatTemplate(), this.pickerView.locale); for (int i = min; i <= max; ++i) { - this.values.add(format.format(cal.getTime())); - this.displayValues.add(format.format(cal.getTime())); + this.values.add(getUsString(cal)); + this.displayValues.add(getLocaleString(cal)); cal.add(Calendar.MONTH, 1); } this.picker.setDisplayedValues(this.displayValues.toArray(new String[0])); this.picker.setMinValue(min); this.picker.setMaxValue(max); } - + @Override public boolean visible() { return this.pickerView.mode == Mode.date; @@ -35,4 +34,20 @@ public class MonthWheel extends Wheel public String getFormatTemplate() { return "LLLL"; } + + private String getUsString(Calendar cal) { + return getString(cal, Locale.US); + } + + private String getLocaleString(Calendar cal) { + return getString(cal, this.pickerView.locale); + } + + private String getString(Calendar cal, Locale locale){ + return getFormat(locale).format(cal.getTime()); + } + + private SimpleDateFormat getFormat(Locale locale) { + return new SimpleDateFormat(this.getFormatTemplate(), locale); + } } \ No newline at end of file