This is an automated email from the ASF dual-hosted git repository. solomax pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/openmeetings.git
The following commit(s) were added to refs/heads/master by this push: new 128a145 [OPENMEETINGS-2334] fr-CA date-time parsing/formatting should work 128a145 is described below commit 128a145366def0f4b53a840a29256e50a6bf0988 Author: Maxim Solodovnik <solomax...@gmail.com> AuthorDate: Thu May 7 09:55:00 2020 +0700 [OPENMEETINGS-2334] fr-CA date-time parsing/formatting should work --- .../web/common/AbstractOmDateTimePicker.java | 21 ++++++++++++++++++--- .../org/apache/openmeetings/util/TestDateTime.java | 13 +++++++++++++ 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/AbstractOmDateTimePicker.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/AbstractOmDateTimePicker.java index 062da09..96450c2 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/AbstractOmDateTimePicker.java +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/AbstractOmDateTimePicker.java @@ -20,6 +20,7 @@ package org.apache.openmeetings.web.common; import java.text.DateFormat; import java.text.SimpleDateFormat; +import java.util.Locale; import org.apache.openmeetings.web.app.WebSession; import org.apache.wicket.model.IModel; @@ -41,7 +42,7 @@ public abstract class AbstractOmDateTimePicker<T> extends AbstractDateTimePicker public AbstractOmDateTimePicker(String id, IModel<T> model, String format) { super(id, model, new DatetimePickerConfig() //.useLocale(WebSession.get().getLocale().toLanguageTag()) - .withFormat(format) + .withFormat(patch(format)) .with(new DatetimePickerIconConfig() .useDateIcon(FontAwesome5IconType.calendar_s) .useTimeIcon(FontAwesome5IconType.clock_s) @@ -56,8 +57,18 @@ public abstract class AbstractOmDateTimePicker<T> extends AbstractDateTimePicker setRenderBodyOnly(false); } + public static String patch(String format) { + // in Java free text is escaped with single-quotes + // moment.js uses [] + return format.replaceFirst("(.*)([']{1}(.*)[']{1})(.*)", "$1\\[$3\\]$4"); + } + public static String getDateTimeFormat() { - DateFormat fmt = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, WebSession.get().getLocale()); + return getDateTimeFormat(WebSession.get().getLocale()); + } + + public static String getDateTimeFormat(Locale loc) { + DateFormat fmt = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, loc); if (fmt instanceof SimpleDateFormat) { return ((SimpleDateFormat)fmt).toPattern(); } @@ -65,7 +76,11 @@ public abstract class AbstractOmDateTimePicker<T> extends AbstractDateTimePicker } public static String getDateFormat() { - DateFormat fmt = DateFormat.getDateInstance(DateFormat.SHORT, WebSession.get().getLocale()); + return getDateFormat(WebSession.get().getLocale()); + } + + public static String getDateFormat(Locale loc) { + DateFormat fmt = DateFormat.getDateInstance(DateFormat.SHORT, loc); if (fmt instanceof SimpleDateFormat) { return ((SimpleDateFormat)fmt).toPattern(); } diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/util/TestDateTime.java b/openmeetings-web/src/test/java/org/apache/openmeetings/util/TestDateTime.java index ac9120d..a5f5c32 100644 --- a/openmeetings-web/src/test/java/org/apache/openmeetings/util/TestDateTime.java +++ b/openmeetings-web/src/test/java/org/apache/openmeetings/util/TestDateTime.java @@ -29,6 +29,7 @@ import java.util.Calendar; import java.util.Date; import java.util.Locale; +import org.apache.openmeetings.web.common.AbstractOmDateTimePicker; import org.junit.jupiter.api.Test; public class TestDateTime { @@ -73,4 +74,16 @@ public class TestDateTime { .toFormatter(Locale.ENGLISH); assertNotNull(formatter1.parse(jsDateStr)); } + + @Test + public void test3() throws Exception { + final Locale loc = new Locale.Builder() + .setLanguage("fr") + .setRegion("CA") + .build(); + String format = AbstractOmDateTimePicker.getDateTimeFormat(loc); + assertEquals("yy-MM-dd HH [h] mm", AbstractOmDateTimePicker.patch(format)); + format = AbstractOmDateTimePicker.getDateTimeFormat(Locale.ENGLISH); + assertEquals(format, AbstractOmDateTimePicker.patch(format)); + } }